您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页MFC DLL的生成和调用实例

MFC DLL的生成和调用实例

来源:尚车旅游网
1.打开VS2012,依次选择文件—新建—项目—MFC DLL,在下方名称栏中输入工程命名OneDLL,在位置栏中选择存放工程文件的路径—确定—点击下一步—DLL类型:使用共享 MFC DLL 的规则 DLL—点击完成。

2.其中我们感兴趣的是OneDLL.cpp文件和OneDLL. def文件。

OneDLL.cpp文件是DLL的主要的源代码文件,它包含了COneDLLApp类的定义;OneDLL.def文件包含了DLL提供的关于DLL在Wind ows下运行的一些信息,在这个文件中定义了一些参数,如DLL的名称和属性等,还声明了从DLL中输出的函数。

3.添加实现代码,黑色加粗部分为添加的代码。

#include \"stdafx.h\"

#include \"OneDLL.h\"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

int Message(void);

BEGIN_MESSAGE_MAP(COneDLLApp, CWinApp)

END_MESSAGE_MAP()

// COneDLLApp 构造

COneDLLApp::COneDLLApp()

{

// TODO: 在此处添加构造代码,

// 将所有重要的初始化放置在 InitInstance 中

}

// 唯一的一个 COneDLLApp 对象

COneDLLApp theApp;

// COneDLLApp 初始化

BOOL COneDLLApp::InitInstance()

{

CWinApp::InitInstance();

return TRUE;

}

int Message(void)

{

MessageBox(NULL,_T(\"This is

return 1;

}

记得设为为多字节而非unicode编码。修改.def文件:

OneDLL.def : 声明 DLL 的模块参数。LIBRARY \"OneDLL\"

EXPORTS Message

; 此处可以是显式导出

the example of testing

DLL.\"),NULL,MB_OKCANCEL);

4.点击生成——生成解决方案,可以生成相关的lib文件和dll文件,在OneDLL\\Debug进行查看生成的文件。

5. 新建调用DLL(OneDLL)的MFC工程。

新建一个基于MFC框架的单文档工程,并在TestDLLView.cpp文件开始处添加

HINSTANCE handlerDLL=NULL;

typedef int(* MESSAGE)(void);

MESSAGE Message;

然后在菜单中添加DLL主菜单、子菜单,如下图所示,以及View类下的菜单响应函数。

子菜单ID分别为IDDLLLOAD和IDDLLTEST

void CTestDLLView::OnDllload()

{

// TODO: 在此添加命令处理程序代码

if(handlerDLL!=NULL)

{

MessageBox( _T(\"The OneDLL.DLL has been loaded.\") );

return;

}

handlerDLL=LoadLibrary( _T(\"OneDLL.DLL\") );

if(handlerDLL==NULL)

{

MessageBox( _T(\"Cannot Load the OneDLL.DLL\") );

}

else

{

MessageBox( _T(\"Load the OneDLL.DLL successful!\") );

}

Message=(MESSAGE)GetProcAddress(handlerDLL,_T(\"Message\"));

}

void CTestDLLView::OnDlltest()

{

// TODO: 在此添加命令处理程序代码

if(handlerDLL==NULL)

{

MessageBox(_T(\"Please Load the OneDLL.DLL first.\"));

return;

}

Message();

}

接着,进行生成——生成解决方案,提示如下错误:

通过查看是 Message=(MESSAGE)GetProcAddress(handlerDLL,_T(\"Message\"));引起的,解决办法是:右击视图栏中的工程名——属性——项目默认值——字符集——使用多字节字符集(原来是使用Unicode字符集)——确定,重新生成解决方案,错误消失。

6. 打开OneDLL工程,右击视图栏中的工程名——属性——配置属性——常规——输出目录设置为TestDLL\\Debug,然后点击生成——生成解决方案,就可以在TestDLL\\Debug路径下生成相关的lib文件和dll文件以供调用。

7.打开TestDLL工程,并允许该工程。

打击菜单DLL——LoadDLL,弹出下面的对话框,说明DLL载入成功,单击确定。

然后单击DLL——TestDLL,弹出下面的对话框,说明DLL调用成功。

如果提示Cannot Load the OneDLL.DLL,说明设置的调用DLL的路径有问题;

如果提示The OneDLL.DLL has been loaded.说明DLL已经载入了。

至此,整个实验已经结束,如果有兴趣,自己可以动手试试。

注意:

1. 在设置DLL的生成目录时,通过浏览按钮,你选择目的路径,系统会自动生成为相应的相对地址..\\..\\TestDLL\\Debug。

..\\..\\TestDLL\\Debug代表相对路径;

D:\\LiuYaqiang\\vs2012\\TestDLL\\Debug代表绝对路径;

相对路径在工程的目录发生移动的时候,可以省去很多麻烦,这点大家自己慢慢体会吧。

2. TestDLL\\Debug与TestDLL\\TestDLL\\Debug很相像,大家不要选错了,这个例子中应该选择前者。

参考资料:

Visual+C+++6.0_编程实例与技巧

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务