马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
// MFCdll.cpp: 定义 DLL 的初始化例程。
//
#include "pch.h"
#include "framework.h"
#include "MFCdll.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
//
//TODO: 如果此 DLL 相对于 MFC DLL 是动态链接的,
// 则从此 DLL 导出的任何调入
// MFC 的函数必须将 AFX_MANAGE_STATE 宏添加到
// 该函数的最前面。
//
// 例如:
//
// extern "C" BOOL PASCAL EXPORT ExportedFunction()
// {
// AFX_MANAGE_STATE(AfxGetStaticModuleState());
// // 此处为普通函数体
// }
//
// 此宏先于任何 MFC 调用
// 出现在每个函数中十分重要。 这意味着
// 它必须作为以下项中的第一个语句:
// 出现,甚至先于所有对象变量声明,
// 这是因为它们的构造函数可能生成 MFC
// DLL 调用。
//
// 有关其他详细信息,
// 请参阅 MFC 技术说明 33 和 58。
//
// CMFCdllApp
BEGIN_MESSAGE_MAP(CMFCdllApp, CWinApp)
END_MESSAGE_MAP()
// CMFCdllApp 构造
CMFCdllApp::CMFCdllApp()
{
// TODO: 在此处添加构造代码,
// 将所有重要的初始化放置在 InitInstance 中
}
// 唯一的 CMFCdllApp 对象
CMFCdllApp theApp;
// CMFCdllApp 初始化
BOOL CMFCdllApp::InitInstance()
{
CWinApp::InitInstance();
return TRUE;
}
void ShowDLLDlg() {
CDialog dlg(IDD_DIALOG1);
dlg.DoModal();
}
我的问题:如何让dll装载成功后,自动运行ShowDLLDlg()函数 ??
在MFCdll.cpp文件中,可以添加一个导出函数,该函数在DLL加载时自动调用并运行ShowDLLDlg()函数。具体步骤如下:
1. 在MFCdll.h文件中添加以下代码:#ifdef MFCDLL_EXPORTS#define MFCDLL_API __declspec(dllexport)#else#define MFCDLL_API __declspec(dllimport)#endifMFCDLL_API void AutoRunShowDLLDlg();
2. 在MFCdll.cpp文件中添加以下代码:MFCDLL_API void AutoRunShowDLLDlg(){ AFX_MANAGE_STATE(AfxGetStaticModuleState()); ShowDLLDlg();}
3. 在DLL的导出函数中调用AutoRunShowDLLDlg()函数,如下所示:extern "C" MFCDLL_API void WINAPI RunDLL(){ AutoRunShowDLLDlg();}
4. 然后在DLL的工程属性中,将MFCDLL_EXPORTS宏定义添加到预处理器定义中。
这样,在DLL加载时,就会自动调用AutoRunShowDLLDlg()函数,从而运行ShowDLLDlg()函数。
|