下,
这个名字必须与定义函数的名字完全一致,如此就得到一个没有任何修饰的函数名。
? 可以使用DEs criptION 语句描述DLL 的用途(此句可选);
? ";"对一行进行注释(可选)。
10.5 动态链接库中的资源
利用Visual C++工具能够创建基于MFC 的常规/扩张动态链接库,这种形式的动态链接
库可以方便地添加资源。应用程序在调用DLL 的时候可以很方便地使用其中的资源,这在很
大程度上方便了应用程序的编写。为了使读者理解在动态链接库中使用资源的方法,本节将
通过在动态链接库中添加对话框资源来介绍使用资源的具体过程。
实例10-1:动态链接库中使用资源实例。源代码在光盘中“\10\实例10-1\vcDlgDLL”目录下。
为了能够在动态链接库中方便地使用资源,可以先创建一个“MFC AppWizard(dll)”工
程,如图10-4 所示。然后选择“Regular Dll using shared MFC DLL”项,单击“Finish”按钮
即可生成动态链接库。
图10-4 生成Regular Dll using shared MFC DLL
枫叶文学网www.fywxw.com
第10 章 动态链接库
·265·
添加一个对话框资源到工程中,从菜单中依次选择“Insert”→“Resource”项,添加“Dialog”
选择“New”项,至此对话框已添加到DLL 工程中。
为对话框添加CTest 类,基类为CDialog。同时在MFCDLL.cpp 中(因创建的工程为
MFCDLL)添加测试接口函数如下:
extern "C" __declspec(dllexport) void Show()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CTest test;
test.DoModal ();
}
静态连接到MFC 的动态链接库只被Visual C++的专业版和企业版所支持。该类DLL 应
用程序里头的输出函数可以被任意的Win32 程序使用,包括使用MFC 的应用程序。输入函
数有如下形式:
extern "C" EXPORT YourExportedFunction();
如果没有extern "C"修饰,输出函数仅仅能从C++代码中调用。
DLL 应用程序从CWinApp 派生,但没有消息循环。
动态链接到MFC 的规则DLL 应用程序里头的输出函数可以被任意Win32 程序使用,包
括使用MFC 的应用程序。但是,所有从DLL 输出的函数应该以如下语句开始:
AFX_MANAGE_STATE(AfxGetStaticModuleState())
此语句用来正确地切换MFC 模块状态。
因为一般在动态链接库中使用嵌入资源是通过动态链接的,所以测试接口函数作了上述
程序片断的声明和定义。
在要输出的函数、类、数据的声明前加上_