MFC:建立dll和呼叫dll
阿新 • • 發佈:2019-02-20
一、建立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中新增如下程式碼:
5、新建模組定義檔案,如下圖所示:#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; }
在該檔案中新增如下程式碼:
LIBRARY "DigitalOpera"
EXPORTS
Add @1
Minus @2
Max @3
Min @4
6、編譯(會提示無法啟動程式...dll,但無關緊要,檔案已成功生成),生成dll和lib檔案,如下圖所示:
一、呼叫dll檔案:
1、新建一個控制檯程式,將DigitalOpera.dll新增到該專案的Debug目錄下;
2、在主檔案中新增如下程式碼:
3、執行結果如下:#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; }
至此,有關dll的建立和呼叫過程已簡單的闡述完畢。