头儿让自己把写的lte dangle的测试工具打包出api交给其他厂商客户,我想也可以,只要把exe编译成dll,然后export出来几个函数接口不就OK了。结果是可行的,但是过程是“漫长”滴,呵呵,因为之前没做过。现在把这两天的成果写下来,毕竟耗费时间了。
思路:我是通过新建mfc的regular share的dll工程,然后把原来工程的.cpp和.h文件以及资源.rc和文件夹res导入新建dll工程对应目录。
导入我们会遇到的问题:
1、原来工程Cxx.h中的类是从CWinApp中继承下来的,里面隐含WinMain()函数,但是我们新建dll工程也有自己的WinMain()入口,这样我们就需要把要导入的原来工程中的Cxx.h中的相关类做修改,删去: public CWinApp,virtual BOOL InitInstance();DECLARE_MESSAGE_MAP()等。
2、很可能导入资源中含有对话框,这样只需要把原来工程的res文件夹和.rc文件copy到新建dll工程目录中,然后修改相关名称即可。如此你会发现自己是多么聪明,省去了一个大麻烦,不用再去新建对话框,让后按照原来dialog资源一个各种定义这么麻烦。
编译的环境:右击工程->属性->配置属性->general 把工程默认中的Use of MFC对应得改成Use MFC in a Static Library。
对应你想export那个函数,只要在新建工程dll中在新建.cpp,包含对应.h
//global.cpp,就像这个,在其他GUI调用ShowDlg这个函数,就会弹出相应对话框。
#include "stdafx.h"
#include "LTELoadUbootDlg.h"
extern "C" __declspec(dllexport) void ShowDlg(void)
{
&nbs

本文详细记录了如何将一个使用MFC的EXE应用程序转换为DLL的过程,包括修改源代码、处理WinMain冲突、资源导入以及动态调用DLL中函数的方法。通过新建MFC DLL工程,导入原EXE的源文件和资源,调整编译设置,并导出所需函数接口,成功实现了转换。
741

被折叠的 条评论
为什么被折叠?



