MFC擴展DLL的dllmain.cpp文件內容

學習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; // 確定
}




發佈了329 篇原創文章 · 獲贊 33 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章