MFC中使用def文件导出动态库的方法

会有一股神秘感。 提交于 2019-11-30 14:39:04

首先创建一个动态库(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: 在此添加控件通知处理程序代码
}

 

结果:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!