调用DLL代码段:
#include <iostream>
#include "windows.h"
typedef int (*lpAddFun)(int a, int b);
int main()
{
HINSTANCE hDll;
lpAddFun addFun;
hDll = LoadLibrary(L"MFCLibrary1.dll");
std::cout << hDll << '\n';
if (hDll != NULL)
{
std::cout << "test" << '\n';
addFun = (lpAddFun)GetProcAddress(hDll, "add");
if (addFun != NULL)
{
std::cout << "test_2" << '\n';
int result = addFun(3, 6);
std::cout << result << '\n';
}
}
std::cout << "Hello World!\n";
}
编写DLL代码段:
.h文件:
>extern "C" int _declspec(dllexport) add(int a, int b);
class CMFCLibrary1App : public CWinApp
{
public:
CMFCLibrary1App();
int add(int a, int b);
// 重写
public:
virtual BOOL InitInstance();
DECLARE_MESSAGE_MAP()
};
.c文件
#include "MFCLibrary1.h"
int CMFCLibrary1App::add(int a, int b)
{
return a + b;
}
int add(int a, int b)
{
return a + b;
}
调用的是int add(int a,int b)函数,而非调用类中的同名函数。