//dll頭文件 #ifndef MYDLL_H #define MYDLL_H #ifndef MYDLL_EXPORT #define MYDLL _declspec(dllexport) #else #define MYDLL _declspec(dllimport) #endif //dll導出函數 在普通導出函數中加上exturn "C" 即可 extern "C" MYDLL int add(int a, int b); #endif
//cpp文件,需要實現的函數功能 求2個變量的和 #include "mydll.h" MYDLL int add(int a, int b) { return a + b; }
//生成dll后,新建一個控制台程序,並將生成的dll和頭文件放到新的工程的目錄下
//寫一個exe來動態加載頭文件,並添加dll的頭文件
#include <iostream> #include <windows.h> #include "mydll.h" using namespace std; int main() { //動態加載dll HINSTANCE handle = LoadLibrary("mydll.dll"); //判斷是否能成功加載 if (handle == NULL) { cout << "未成功加載dll\n"; return 0; } else { //定義要找的函數原型,並查找函數原型地址 typedef int(*Add)(int, int); Add add = (Add)GetProcAddress(handle, "add"); if (!add) { cout << "未找到函數原型!\n"; } else { //函數調用 int reslut = add(1, 2); cout << reslut << endl; //卸載dll FreeLibrary(handle); } return 0; } }
得到的結果為3