lm68140318 发表于 2023-5-25 14:22:54

MFC规则dll

// 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()函数   ??

isdkz 发表于 2023-5-25 14:23:33

在MFCdll.cpp文件中,可以添加一个导出函数,该函数在DLL加载时自动调用并运行ShowDLLDlg()函数。具体步骤如下:

1. 在MFCdll.h文件中添加以下代码:

#ifdef MFCDLL_EXPORTS
#define MFCDLL_API __declspec(dllexport)
#else
#define MFCDLL_API __declspec(dllimport)
#endif

MFCDLL_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()函数。

sfqxx 发表于 2023-5-25 17:51:19

isdkz 发表于 2023-5-25 14:23
在MFCdll.cpp文件中,可以添加一个导出函数,该函数在DLL加载时自动调用并运行ShowDLLDlg()函数。具体步骤 ...

快申请卓越VIP呀{:10_248:}

isdkz 发表于 2023-5-25 17:59:23

sfqxx 发表于 2023-5-25 17:51
快申请卓越VIP呀

申请了{:10_279:}

sfqxx 发表于 2023-5-25 17:59:36

isdkz 发表于 2023-5-25 17:59
申请了

{:10_275:}

isdkz 发表于 2023-5-25 18:02:05

sfqxx 发表于 2023-5-25 17:59


据说论坛要改版:https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=228737&pid=6243386

sfqxx 发表于 2023-5-25 18:45:49

isdkz 发表于 2023-5-25 18:02
据说论坛要改版:https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=228737&pid=6243386

wc
页: [1]
查看完整版本: MFC规则dll