您的位置:首页 > 编程语言 > C语言/C++

MFC扩展DLL的dllmain.cpp文件内容

2018-01-09 11:15 288 查看
学习MFC向导创建的扩展库代码 记录一下 总结:下面是MFC应用程序调用扩展库的方式代码,如果是一般DLL调用扩展DLL则需要去掉new CDynLinkLibrary(SH2ReportDLL);,然后自己显式的写一个导出函数。

// dllmain.cpp : 定义 DLL 的初始化例程。
//

#include "stdafx.h"
#include <afxwin.h>
#include <afxdllx.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

static AFX_EXTENSION_MODULE SH2ReportDLL = { NULL, NULL };//静态全局结构体初始化

extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
// 如果使用 lpReserved,请将此移除
UNREFERENCED_PARAMETER(lpReserved);

if (dwReason == DLL_PROCESS_ATTACH)
{
TRACE0("SH2Report.DLL 正在初始化!\n");

// 扩展 DLL 一次性初始化
if (!AfxInitExtensionModule(SH2ReportDLL, hInstance))
return 0;

// 将此 DLL 插入到资源链中
// 注意: 如果此扩展 DLL 由
// MFC 规则 DLL (如 ActiveX 控件)隐式链接到,
// 而不是由 MFC 应用程序链接到,则需要
// 将此行从 DllMain 中移除并将其放置在一个
// 从此扩展 DLL 导出的单独的函数中。使用此扩展 DLL 的
// 规则 DLL 然后应显式
// 调用该函数以初始化此扩展 DLL。否则,
// CDynLinkLibrary 对象不会附加到
// 规则 DLL 的资源链,并将导致严重的
// 问题。

new CDynLinkLibrary(SH2ReportDLL);

}
else if (dwReason == DLL_PROCESS_DETACH)
{
TRACE0("SH2Report.DLL 正在终止!\n");

// 在调用析构函数之前终止该库
AfxTermExtensionModule(SH2ReportDLL);
}
return 1; // 确定
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: