欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MFC下dll的创建与使用

程序员文章站 2022-06-25 19:20:28
...

创建带有导出类的dll:

1、vc向导创建mfcdll项目;
2、创建需要导出的类,正常创建
3、类的h文件中声明class时添加_declspec(dllexport),即由class MyClass{} 变为class _declspec(dllexport) MyClass{};
4、在dll项目的App类中,头文件中添加extern “C” __declspec(dllexport) MyClass;
cpp文件中添加extern “C” _declspec(dllexport) MyClass;
5、完成导出类dll创建。

使用带有导出类的dll:

1、拷贝dll文件+dll.lib+MyClass.h到项目中;
2、在需要使用MyClass类的类中添加

 #include "MyClass.h"
 #pragma comment(lib,"Mdll.lib")
 class __declspec(dllimport) MyClass;

以上三句;
3、完成引用dll类,可随即使用该类。

创建带有导出函数的dll:

1、在dll项目中的App类cpp文件中追加需要导出的函数,例如:

extern "C" _declspec(dllexport) void Demo()
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    DemoDlg dlg;//显示dll中的一个对话框
    dlg.DoModal();
}

2、在dll项目的App类的头文件中添加extern “C” _declspec(dllexport) void Demo();
3、完成导出函数dll的创建。

使用带有导出函数的dll:

A:静态

–1、拷贝dll文件+dll.lib+dll.h到项目中;
–2、在需要使用函数的类中添加

#include "dll.h"
 #pragma comment(lib,"dll.lib")

–3、完成函数添加,在作用区域内可随意使用函数。

B:动态

–1、拷贝dll文件到项目中;
–2、通过以下实例使用加载dll和释放dll;

typedef void (*pFunction)(void);
HINSTANCE hLibrary; //DLL句柄
hLibrary = LoadLibrary("dll.dll");
if (hLibrary == NULL)
{
    //加载失败
    return;
}
pFunction pDemo = (pFunction)GetProcAddress(hLibrary,"Demo");
if (NULL==pDemo)
    //没有Demo函数 
else
    pDemo();
FreeLibrary(hLibrary);//不再使用hLibrary时释放

–3、完成使用过程。