1. 程式人生 > >MFC:建立dll和呼叫dll

MFC:建立dll和呼叫dll

一、建立dll檔案:

1、開啟VS2010,新建Win32專案,如下圖所示:

2、應用程式型別,選取DLL

3、新增新類 DigitalProc,在標頭檔案 DigitalProc.h中新增如下程式碼:

#ifndef DIGITALPROCl_H_
#define DIGITALPROCl_H_

#ifdef DIGITALDLL
#define DIGITALDLL extern "C" _declspec(dllimport)
#else
#define DIGITALDLL extern "C" _declspec(dllexport)
#endif

DIGITALDLL int Add(int num1, int num2);
DIGITALDLL int Minus(int num1, int num2);
DIGITALDLL int Max(int num1, int num2);
DIGITALDLL int Min(int num1, int num2);

#endif

4、在 DigitalProc。cpp中新增如下程式碼:

#include "stdafx.h"

int Add(int num1, int num2)
{
    return num1 + num2;
}

int Minus(int num1, int num2)
{
    return num1 - num2;
}

int Max(int num1, int num2)
{
    return num1 > num2 ? num1 : num2;
}

int Min(int num1, int num2)
{
    return num1 < num2 ? num1 : num2;
}
5、新建模組定義檔案,如下圖所示:

在該檔案中新增如下程式碼:

LIBRARY "DigitalOpera"
EXPORTS
Add @1
Minus @2
Max @3
Min @4

6、編譯(會提示無法啟動程式...dll,但無關緊要,檔案已成功生成),生成dll和lib檔案,如下圖所示:


一、呼叫dll檔案:

1、新建一個控制檯程式,將DigitalOpera.dll新增到該專案的Debug目錄下;

2、在主檔案中新增如下程式碼:

#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;

typedef int (*lpAddFunc)(int, int);
typedef int (*lpMinusFunc)(int, int);
typedef int (*lpMaxFunc)(int, int);
typedef int (*lpMinFunc)(int, int);

int _tmain(int argc, _TCHAR* argv[])
{
    lpAddFunc addFunc;
    lpMinusFunc minusFunc;
    lpMaxFunc maxFunc;
    lpMinFunc minFunc;

    HINSTANCE hDll;
    hDll = LoadLibrary("..\\Debug\\DigitalOpera.dll");
    if (hDll != NULL)
    {
        addFunc = (lpAddFunc)GetProcAddress(hDll, "Add");
        minusFunc = (lpMinusFunc)GetProcAddress(hDll, "Minus");
        maxFunc = (lpMaxFunc)GetProcAddress(hDll, "Max");
        minFunc = (lpMinFunc)GetProcAddress(hDll, "Min");

        if (addFunc != NULL)
        {
            cout << addFunc(12, 35) << endl;
            cout << minusFunc(12, 35) << endl;
            cout << maxFunc(12, 35) << endl;
            cout << minFunc(12, 35) << endl;
        }
    }

    return 0;
}
3、執行結果如下:

至此,有關dll的建立和呼叫過程已簡單的闡述完畢。