将一个有对话框的MFC程序打包成DLL,以供另一个有对话框的MFC程序调用,两个程序均有消息响应函数
问题:1.应该建立什么类型的dll。
2.dll的建立,以及如何去调用(主要是格式,声明等,我用的是VC6.0编译环境)。
3.帮我解决了的话,再加50分。
建立MFC 的DLL
在DLL程序中提供API,MFC程序中调用API即可。
API的创建有多种方式,下面给一个范例:
写在DLL中的,
//////////////////////////////////////////////////////////////////////////
//接口函数声明
#ifdef STATIONCONFIGTOOLTDLL_EXPORTS
//上面的定义要添加在project setting 中详情见图示
#define STATECONFIGDLL_API extern "C"__declspec(dllexport)
#else
#define STATECONFIGDLL_API extern "C"__declspec(dllimport)
#endif
STATECONFIGDLL_API void ShowDlg(TCHAR* pTxtPath);
//以下为如何定义接口函数
#include "StdAfx.h"
#include "Exports.h"
#include "MainDlg.h" //主对话框的头文件
//////////////////////////////////////////////////////////////////////////
//导出定义函数
//
STATECONFIGDLL_API void ShowDlg(TCHAR* pTxtPath)
//pTxtPath为调用程序传来的文件地址
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CMainDlg mStationConfigDlg(NULL,pTxtPath);
mStationConfigDlg.DoModal();
}
////////////////////////////////////////////////////////////////////////
把动态库导入主程序exe所在文件夹,主程序调用接口之前,
hDll = LoadLibrary(动态库名);//加载.dll
加载成功后,直接调用API就可以了。
来自:求助得到的回答如何制作带MFC界面的DLL
进入MFC DLL向导,选择下一步,选择“使用共享MFC DLL的规则DLL”。点击“完成”按钮。3 创建MFC DLL项目成功。运行时库选择:属性-->c\/c++-->代码生成-->运行库 “多线程调试 DLL (\/MDd)”。4 点击项目右键,添加MFC类。输入类名:IHpDllWin,选择基类:CDialog,点击完成。5 动态库将定义一...
如何制作带MFC界面的DLL
步骤阅读.2进入MFC DLL向导,选择下一步,选择“使用共享MFC DLL的规则DLL”。点击“完成”按钮。步骤阅读.步骤阅读.3创建MFC DLL项目成功。运行时库选择:属性-->c\/c++-->代码生成-->运行库 “多线程调试 DLL (\/MDd)”。步骤阅读.步骤阅读.4点击项目右键,添加MFC类。输入类名:IHpDllWin,选...
MFC如何调用DLL中的类,例子:
\/**1、先用mfc向导生成静态dll文件。2、编辑增加类;3、生成dll文件和lib文件;4、将生成的dll和lib,和类的头文件复制到需要引用的文*件exe下;\/\/\/导出dll的头文件myClass.h#define DLLimport __declspec(dllimport)#define DLLexprot __declspec(dllexport)class DLLexprot myClass \/\/导出类{publi...
如何把MFC界面封装为DLL供别人调用
1、先用mfc向导生成静态dll文件。2、编辑增加类;3、生成dll文件和lib文件;4、将生成的dll和lib,和类的头文件复制到需要引用的文*件exe下;\/ \/\/导出dll的头文件myClass.h define DLLimport __declspec(dllimport)define DLLexprot __declspec(dllexport)class DLLexprot myClass \/\/导出类 { pub...
MFC如何调用DLL(VC++)
步骤如下:1.加载动态库(使动态库程序运行)HMODULE LoadLibrary(LPCTSTR lpFileName \/\/ 动态库的名称或全路径 );\/\/返回动态库的实例句柄(HINSTANCE)。如果dll文件与.exe文件在同一路径下,只需要写动态库名称,不在同一路径下,则需写带盘符的全路径 2.获取函数地址 FARPROC GetProcAddress(HMODULE ...
C#调用mfc的dll
特殊属性DllImport的构造函数中输入的是所引用的dll的中文名称或者全名称,如果输入的只是文件名那么系统会在运行目录下寻找文件名为指定名称的程序集。注意声明的引用必须是static unsafe extern 类型的。其他的形式就跟dll中定义的一样。这样声明之后,我们就可以在自己的代码里面就像调用方法一样的使用这个...
怎样在MFC中调用C#编写的DLL
1、打开项目属性对话框,方法是右键单击解决方案资源管理器中的项目并选择属性。2、展开配置属性旁边的节点并选择常规。在右侧窗格中的项目默认值下,将公共语言运行库支持设置为公共语言运行库支持 (\/clr)。3、在相同的窗格中,确保将MFC 的使用设置为在共享 DLL 中使用 MFC。4、在配置属性下,展开C\/...
MFC如何调用DLL(VC++)
MYFUNC)GetProcAddress(hInst,"SetLayeredWindowAttributes");if(fun){ \/\/ 成功 fun(hWnd,RGB(0,0,0),255,2 | 1);} FreeLibrary(hInst);\/\/释放 DLL } 基本上就是这么一个流程,LoadLibrary->成功->获取函数入口点->调用函数->最后FreeLibrary,注意FreeLibrary是必须要实现的不然会造成资源泄漏。
mfc中dll创建\/\/MFC 扩展DLL与共享MFC DLL有什么区别
而MFC扩展DLL与应用程序接口可以是MFC,可以从MFC扩展dll中导出一个MFC的派生类。一般情况下我们都会使用规则的dll,因为"规则DLL"能够提供给所有支持dll技术的语言的调用接口。在规则DLL中,有一个CWinApp继承下来的类,dll入口函数则是由MFC自动提供,被MFC封装。此类DLL程序从CWinApp派生,但是没有消息循环:下面再详细...
dllDLL的数种调用方式
动态调用中,开发者需明确使用LoadLibrary或MFC提供的AfxLoadLibrary函数将动态连接库调入应用程序,文件名作为参数。通过GetProcAddress()获取所需引入的函数。之后,开发者可以直接通过函数名调用DLL的输出函数,方法与调用程序内部其他函数相同。在应用程序退出前,应使用FreeLibrary或AfxFreeLibrary释放动态连接库。...