将现有的_C++类转换成_dll动态链接库2.pdf

4星(超过85%的资源)
所需积分/C币:15 2012-09-29 19:06:28 1.05MB PDF
61
收藏 收藏
举报

方法1是使用MFC常规DLL将类的成员函数转化成全局函数,然后导出,方法2是使用MFC扩展DLL直接导出类。
将要准备导入的类复制到当前工程文件夹下然后双击打开,点击右键,将要转换类的头文 件 Initfile h和源文件 nitRile. cpp分别导入到当前工程中,如图2-3所示。 】we"1./今 联吧UU”Gte哭 lia1“nuF11ab 哂P 并且应该先加载库 ni fdef EJUE 一小击山ra 司 kF S FILF 露Gc自通THI5FELE[Ig 包阳自影BEH国山 ivEe TeE 图23 第3步; ①由于要将类 Clnitfile的成员函数导出,因此必须廷立一个类的静态对象,为 Cinitfile添加 函数 Instance(),修改 inutIle.cpp文件代码如下 ClnitFile*CInitFile: Instanceo static ClnitFile Init;/类的静态刈象 return &Init. ② initFile h文件中增加该函数的声明,同时添加以下宏定义: #define Init File(cinitFile: Instance 0) 第4步: ①将类的成员函数封装成全局函数。为了能导出全局函数,在本程的 BuildRegulardllh中 加入以下运定义 #define MYEXPORT declspec(dllexport) Q在木工程的Bu| dRegulardll. cpp屮为要导出的 Getfloat等函数添加如卜代码 #include InitFile. h' IYEXPORT float Get Float(CString Section, CString Item, float value) //)来正确切换MFC模块mfc42d状态 AFX_ MANAGE STATE(Afx GetStaticModule StateO); / nitRile为在第3步中的宏定义, GetFloat为类的成员函数 return InitFile->GetFloat(Section, Item, Value); 其它函数略 注释: MYEXPORT为第4步的宏定义。创建一个与MFC动态连接的常规cⅢ时需要添加 AEX MANAGE STATE( AfxGetStaticModulestate()来止确切换MFC模块mf42d状态, ③回到 Build Regulardll h文件,添加函数的声明: float MYEXPORT GetFloat(CString Section, CString Item, float Value) 第5步: 按F7或点击工具栏上的Bud磁按钮,成c。如果点击会出现如图图24所示对 框,直接点击“ Cance”按钮取消即可 日 spE y te exec itab e le。 EXEcutable le nang CT巴 图2-4 浏览本⊥程文件夹下的 Debug文件夹,可以看到生成的 BuildRegulardll dI文件和 Build Regular|l文件 212测试和使用DLL 第1步: 另外新建一个名字为 InitlnidliTest的工程,添加相应界面(本教程省略)。将刚才生成的 BuildRegulardl!d文件、 BuildRegulardl|ib文件及头文件 BuildRegulardllh拷贝到当前⊥程文 件火下,然后使用快捷键“At+F7”,打开 Project Settings的ink选项页,在Obet/ library modules中输入 Build Regulardl!Iib,如图25所示 Sea t Fur. wine neWR Glad Del y I cri LakiE Drh insHtele Tr steVE Eil ArjuardllJil P Lik inermia Soro erIe 厂印 nalr nin ine ucl plans Spare 图2-5 第2步 在该工程中要使用d导出哟数的cpp文件中,添加如下代码: #include Build Regulardll. h' 然后就可以直接调用导出的函数了,如下面的代码所示: m width =Get Float(section, "width ,m width 还行该测试程序,结果如图26所示 InitInidlTest 输入垄形Gint 输入浮点型a1)169 输入了符串型〔cng 保存 图2-6 2,2使用MFC扩展DLL 221.创建DLL 第1步: 选择 File New菜单项,在弹出的New对话框中选择 Projects标签,在工程列表中选择MFC AppWizard(d).并输入工程名Buld,如图27所示。 fls PrInCs Work-AncBE0hrD感 与 ATLCL卹pW2 PsEL name 像D帽真可小+nWz8rd 喜E晶dPw副dd Cp LEUMENIS AND ET 05 :4PE减 son wizard Mabey 點W一 Create new uol斗pa f hulu iu rrrntwnztuuns INom Dalahnse wze win32 Applirylion Wn32ns中pi H-win32 Static Liaw elation- +win32 图2-7 第2步 ①选择" MFC Extension DLL”,点击 Finish按钮,完成动态常规d程创建,如图28所示。 what type a DuL would yu lEB l crEMs? CB到r则 Lwith Mre statically lin bod Mular CLL Uging shwed NFC DLL MFCEXtEna iss LL luang shErEd NFC DLL what featruE uo ywa like s your DLL? lyh切U用 remmEle 过eple <Back 图2-8 将要准备导入的类复制到当前工程文件夹下,然后双击打开,点击右键,将要转換类的头 文件 InitFile. h和源文件 nitRile. cpp分别导入到当前工程中,如图29所示。 include ' h 图 Glide“31 iacu““piF11g c】ue"geh1p”用 并且应该先加载库 hi fdef jEle IETaEeF THIS FIll rh Dirt 其Gch语THI5FELE[】 d手 re naM DEHUI MEu LL量Li 图29 第3步 在类的头文件 nitRile. h中修改将 class CInitFile为 class aFX EXt CLASs CInitFile如图2-10所 La55 AFX EXT CLASS CIDiEF让巳 ublic CInitFile() uirtual dInitRile() cString m strFileparaPath: float GetFloat(cstring Section, CString Item, float Ualue); BOOL SetFloat(cstring Section, cString Item, float value); cString SetFileName(cstring NewFolderName, cString FileName); cString SetFileName(cstring NewFolderNameorFileName) 图2-10 第4步 按F7或点击工具栏上的Buid按钮,生成c。如果点l*会出现如图图24所示对话 框,直接点击“ Cancel”按钮取消即可。 鬥心6吧scte啦 rcitateiit CanEel 图211 浏览本工程文件夹下的 Debug文件夹,可以看到成的 Builddll.d文件和 Builddlllib文件。 222.测试和使用DLl 第1步: 另外新建一个名字为 InitInidlITest的工程,添加相应的界面(本教程省略)。将刚才生成的 Builddll dl文件、 Builded.ib文件及头文件 Builddllh拷贝到当前工程文件夹下,然后使用快 捷键“At+F7”,打开 Project Settings的Lnk选项页,在 Object/ library modules中输入 Builddllib, 如图25所示。 Categary. General 口 unbUild4Ld w Gcacrele debug inte Ignore ell default lbrerics 平 Lini ncreeentelh 厂 uncrate maptile Enable proFiling Project op口 magchlp. ib imel age lauhsystc nE'windarws Mll 面 MeNtals扣b:" ebug euilddil-pi"ebu machire:3E /def: aBiildd der iL 图2-12 第2步 在该工程中要使用d导出类函数的头文件中,添加如下代码: #include".h 然后声明该类的一个对象: ClnitFile initfile 最后就可以直接使用导出类的函数了,如下面的代码所示 m width=initfile GetFloat(section, width", m width): 运行该测试程序,结果如图213所示 Init InidlITes 输入整形〔nt〕 浮点型(10 18.9 输入子将串型 阳 保存 图2-13

...展开详情
试读 7P 将现有的_C++类转换成_dll动态链接库2.pdf
立即下载
限时抽奖 低至0.43元/次
身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
蓝翼冰激凌 对入门有所帮助,不错
2013-06-17
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 分享宗师

关注 私信
上传资源赚钱or赚积分
最新推荐
将现有的_C++类转换成_dll动态链接库2.pdf 15积分/C币 立即下载
1/7
将现有的_C++类转换成_dll动态链接库2.pdf第1页
将现有的_C++类转换成_dll动态链接库2.pdf第2页

试读结束, 可继续读1页

15积分/C币 立即下载