MFC DLL的生成和调用实例_第1页
MFC DLL的生成和调用实例_第2页
MFC DLL的生成和调用实例_第3页
MFC DLL的生成和调用实例_第4页
MFC DLL的生成和调用实例_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1•打开VS2012,依次选择文件一新建一项目一MFCDLL,在下方名称栏中输入工程命名OneDLL,在位置栏中选择存放工程文件的路径一确定一点击下一步一DLL类型:使用共享MFCDLL的规则DLL—点击完成。其中我们感兴趣的是OneDLL.cpp文件和OneDLL.def文件。OneDLL.cpp文件是DLL的主要的源代码文件,它包含了 COneDLLApp类的定义;OneDLL.def文件包含了DLL提供的关于DLL在Windows下运行的一些信息,在这个文件中定义了一些参数,如DLL的名称和属性等,还声明了从DLL中输出的函数。添加实现代码,黑色加粗部分为添加的代码。#include"stdafx.h"#include"OneDLL.h"#ifdef_DEBUG#definenewDEBUG_NEW#endifintMessage(void);BEGIN_MESSAGE_MAP(COneDLLApp,CWinApp)END_MESSAGE_MAP()//COneDLLApp构造COneDLLApp::COneDLLApp(){//TODO:在此处添加构造代码,//将所有重要的初始化放置在InitInstance中}//唯一的一个COneDLLApp对象COneDLLApptheApp;//COneDLLApp初始化BOOLCOneDLLApp::InitInstance()CWinApp::InitInstance();returnTRUE;intMessage(void){MessageBox(NULL,_T("ThisistheexampleoftestingDLL."),NULL,MB_OKCANCEL);return1;}记得设为为多字节而非unicode编码。修改.def文件:OneDLL.def:声明DLL的模块参数。LIBRARY"OneDLL"EXPORTSMessage;此处可以是显式导出点击生成——生成解决方案,可以生成相关的lib文件和dll文件,在OneDLL'Debug进行查看生成的文件。新建调用DLL(OneDLL)的MFC工程。新建一个基于MFC框架的单文档工程,并在TestDLLView.cpp文件开始处添加HINSTANCEhandlerDLL=NULL;typedefint(*MESSAGE)(void);MESSAGEMessage;然后在菜单中添加DLL主菜单、子菜单,如下图所示,以及View类下的菜单响应函数。子菜单ID分别为IDDLLLOAD和IDDLLTESTFile:DLL:旦巳IpLoadDLLT云DLLvoidCTestDLLView::OnDllload(){//TODO:在此添加命令处理程序代码if(handlerDLL!=NULL){MessageBox(_T("TheOneDLL.DLLhasbeenloaded."));return;}handlerDLL=LoadLibrary(_T("OneDLL.DLL"));if(handlerDLL==NULL){MessageBox(_T("CannotLoadtheOneDLL.DLL"));}else{MessageBox(_T("LoadtheOneDLL.DLLsuccessful!"));}Message=(MESSAGE)GetProcAddress(handlerDLL,_T("Message"));}voidCTestDLLView::OnDlltest(){//TODO:在此添加命令处理程序代码if(handlerDLL==NULL)

MessageBox(_T("PleaseLoadtheOneDLL.DLLfirst."));return;}Message();}接着,进行生成 生成解决方案,提示如下错误:通过查看是Message=(MESSAGE)GetProcAddress(handlerDLL,_T("Message"));引起的,解决办法是:右击视图栏中的工程名一一属性一一项目默认值一一字符集一一使用多字节字符集(原来是使用Unicode字符集) 确定,重新生成解决方案,错误消失。XT+■n31errorC26M:"GetPtocAddresH不斷皱2肚"mn"wchar_t罔"埠融"LPCETR-t&stdllview.cpp156占2IntelliSense; ■|DDLiU0lAD,TestDLLVievr.cpp35I3IntslliSen&B:来主!W看期nDDLLTEST'TestDULView匚鬧>36'4IntelliSen»:'conti佃:崩r_t趣的宴与1LPCETR'趣茁恿毎不稠TestDLLViffjir.Epp156打开OneDLL工程,右击视图栏中的工程名一一属性一一配置属性一一常规一一输出目录设置为TestDLL\Debug,然后点击生成——生成解决方案,就可以在TestDLL\Debug路径下生成相关的lib文件和dll文件以供调用。Data(DQ►LiuYaqiangkvs20l2kTestDLL名称DLL主成前Te-siDLL.exe口Te&tDLL.ilkgDLL主成前名称Data卜LiuYaqiang卜vs20l2卜TestDLL卜D已bug名称迪OneDLLdll2013/12/1Z檸OneDLL.expDLL知娠 £013/12/1£DOneDLL.ilk2013/12/1SOOneDLL.lib2013/12/12吕OneDLLpdlbTe5.tDLL.exe-滦理浚■DTettDLLillc1"織:W"l]吕Tes-tDLLpdb2013/12/12修煎日期打开TestDLL工程,并允许该工程。打击菜单DLL——LoadDLL,弹出下面的对话框,说明DLL载入成功,单击确定。然后单击DLL——TestDLL,弹出下面的对话框,说明DLL调用成功。如果提示CannotLoadtheOneDLL.DLL,说明设置的调用DLL的路径有问题;如果提示TheOneDLL.DLLhasbeenloaded.说明DLL已经载入了。至此,整个实验已经结束,如果有兴趣,自己可以动手试试。在设置DLL的生成目录时,通过浏览按钮,你选择目的路径,系统会自动生成为相应的相对地址..\..\TestDLL\Debug。..\..\TestDLL\Debug代表相对路径;D:\LiuYaqiang\vs201

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论