########################################################################################################
怎么把一个已经可以运行的Demo.exe(随便取个名字)转换为Demo.dll后在另外一个TestDemo.exe中调用?
转换方法如下:
你先在项目属性-链接器-输入-模块定义那加入一个.def文件,然后,配制属性-常规-配制类型那改为动态库dll。配制属性c/c++预处理-预处理定义那加入_AFXEXP
###########################后面的步骤我没有看懂(主要是对dll不熟悉),也没有尝试过####################
(这个加法你在向导生成的文件中可以看到,自己更改规则与扩展时不一样)这样,就可以生成一个规则dll了。扩展的话,就要把里面的全局app去掉,加入dllmain(在关于dll介绍的书中都有的,这项是必须的)。这里可以看一下向导生成的那种格式。还有,你要是想导出mfc类的话,用扩展。否则用规则。这样就OK了。
#########################################################################################################
怎么在新的exe中显示转换过来的dll中的对话框?(下面是我的尝试)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//在Demo.dll的工程中写一个全局函数如下
void ShowDlg(void){
CDialog1 dlg;
dlg.DoModal();
}
//在Demo.def中添加
EXPORTS
ShowDlg
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//在TestDemo.exe的工程中引用静态库
#pragma comment(lib, "../lib/Demo")
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//在TestDemo.exe的工程调用该dll的地方添加如下代码HINSTANCE hExe=GetModuleHandle(NULL);//获取exe模块句柄
HINSTANCE hDll=GetModuleHandle("1.dll");//获取dll模块句柄
AfxSetResourceHandle(hDll); //切换为dll
ShowDlg();//调用dll中的ShowDlg()函数
AfxSetResourceHandle(hExe); //还原为可执行程序+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++代码结束
编译运行,会出错,有人知道怎么解决吗????
求解决方法
怎么把一个已经可以运行的Demo.exe(随便取个名字)转换为Demo.dll后在另外一个TestDemo.exe中调用?
转换方法如下:
你先在项目属性-链接器-输入-模块定义那加入一个.def文件,然后,配制属性-常规-配制类型那改为动态库dll。配制属性c/c++预处理-预处理定义那加入_AFXEXP
###########################后面的步骤我没有看懂(主要是对dll不熟悉),也没有尝试过####################
(这个加法你在向导生成的文件中可以看到,自己更改规则与扩展时不一样)这样,就可以生成一个规则dll了。扩展的话,就要把里面的全局app去掉,加入dllmain(在关于dll介绍的书中都有的,这项是必须的)。这里可以看一下向导生成的那种格式。还有,你要是想导出mfc类的话,用扩展。否则用规则。这样就OK了。
#########################################################################################################
怎么在新的exe中显示转换过来的dll中的对话框?(下面是我的尝试)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//在Demo.dll的工程中写一个全局函数如下
void ShowDlg(void){
CDialog1 dlg;
dlg.DoModal();
}
//在Demo.def中添加
EXPORTS
ShowDlg
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//在TestDemo.exe的工程中引用静态库
#pragma comment(lib, "../lib/Demo")
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//在TestDemo.exe的工程调用该dll的地方添加如下代码HINSTANCE hExe=GetModuleHandle(NULL);//获取exe模块句柄
HINSTANCE hDll=GetModuleHandle("1.dll");//获取dll模块句柄
AfxSetResourceHandle(hDll); //切换为dll
ShowDlg();//调用dll中的ShowDlg()函数
AfxSetResourceHandle(hExe); //还原为可执行程序+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++代码结束
编译运行,会出错,有人知道怎么解决吗????
求解决方法
解决方案 »
- 托盘气泡提示功能
- CTabCtrl实现的选项卡 如何绘制关闭按钮?
- 关于Thread32First的问题
- 新弹出窗口后,怎么才能,新弹出的窗口左上角ICO图标,要和主窗口的ICO图标一样呢?
- 使用SetLayeredWindowAttributes的疑问
- 建立连接后怎么才能获得客户端的IP等信息
- 我想在ActiveX控件里创建并显示一个非模态对话框,不知怎么下手,请各位帮忙
- 求助:图像时怎么转换的????
- ACCESS问题??我用ACCESS97没有问题?为什么用2000报数据库格式不对??
- MFC串口调试工具无法发送数据,欢迎大神指点。
- 菜鸟飞飞飞~MFC dialog下响应鼠标按键消息的问题
- vc2005,编写的MDI程序如何运行就直接最大化,我在向导中选择了默认,该如何改
然后编写导出类 代码你可以新建一个dll工程 然后对比
你最好先熟悉一下dll相关的东西