用MFC写对话框形式的DLL并用程序进行调用方法

 

 建立一个MFC扩展的DLL-project(假设是ABC类)

 

编写应用的对话框(假设是Dlg类)

 

在ABC.cpp中加入如下代码(假设用函数Show调用)

extern "C" __declspec(dllexport) void Show()
{
 HINSTANCE   save_hInstance   =   AfxGetResourceHandle();
 //AfxSetResourceHandle(theApp.m_hInstance);
 AFX_MANAGE_STATE(AfxGetAppModuleState()); 
 subdll dlg;
 dlg.DoModal ();
 AfxSetResourceHandle(save_hInstance);
}

 

去掉CDlg.cpp中的 #include “ add additional includes here”这一行;在stdax.h中加入include "resource.h",再编译. 

 

DLL制作完毕,将生成的DLL文件(假设是ABC.dll)复制到应用工程的目录下

 

在应用工程的view类中增加相应菜单函数,在该函数中复制代码:

 typedef void (WINAPI * TESTDLL)();
 HINSTANCE hmod;
 hmod = ::LoadLibrary ("ABC.dll");
 if(hmod==NULL)
 {
  AfxMessageBox("载入动态链接库ABC.dll失败!");
 }
 TESTDLL lpproc;
 lpproc = (TESTDLL)GetProcAddress (hmod,"Show");
 if(lpproc!=(TESTDLL)NULL)
  (*lpproc)();
 FreeLibrary(hmod); 

 

编译,OK~~

 

如果以上程序在debug模式下不正确,但是在release下正确,要将Use MFC in a Shared DLL更改成为Use MFC in a Static Library

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值