首先创建一个动态库(dll)。
首先是.h文件
int _stdcall add(int a, int b);
因为我们要使用def文件导出动态库,所以这里就不用_declspec(dllexport)来导出了。
.cpp文件
int _stdcall add(int a, int b)
{
return a + b;
}
.def文件
LIBRARY "FirstDLL"
EXPORTS
add
然后我们试试调用这个动态库能不能用。
创建一个MFC的基本对话框,来调用这个动态库。
Dlg.cpp文件:
typedef int(_stdcall *ADD)(int a, int b);
void CSecondDlg::OnBnClickedButton1()
{
HINSTANCE mdll = LoadLibrary("..\\Debug\\FirstDLL.dll");
ADD fun;
if (mdll != NULL)
{
fun = (ADD)GetProcAddress(mdll, "add");
if (fun != NULL)
{
int ret = fun(1, 2);
char strRes[100] = { 0 };
sprintf_s(strRes, "和为%d", ret);
AfxMessageBox(strRes);
}
else
{
AfxMessageBox("函数加载失败");
}
}
else
{
AfxMessageBox("dll加载失败");
}
FreeLibrary(mdll);
// TODO: 在此添加控件通知处理程序代码
}
结果: