初始化標準 DLL
更新:2007 年 11 月
因為標準 DLL 有 CWinApp 物件,所以它們應該在和 MFC 應用程式的相同位置執行其初始化和終止工作:即在 DLL 的 CWinApp 衍生類別之 InitInstance 和 ExitInstance 成員函式。因為 MFC 會提供由 PROCESS_ATTACH 和 PROCESS_DETACH 的 _DllMainCRTStartup 呼叫的 DllMain 函式,所以您應該不用撰寫自己的 DllMain 函式。MFC 提供的 DllMain 函式會在您的 DLL 載入時呼叫 InitInstance,並在卸載 DLL 之前呼叫 ExitInstance。
標準 DLL 會在其 InitInstance 函式裡呼叫 TlsAlloc 和 TlsGetValue 來儲存多個執行緒。這些函式允許 DLL 儲存執行緒特定的資料。
在動態連結至 MFC 的標準 DLL 中,如果您分別使用任何 MFC OLE、MFC 資料庫 (或 DAO) 或 MFC 通訊端 (Socket) 支援,則會自動連結 MFC 偵錯擴充 DLL MFCOxxD.dll、MFCDxxD.dll 和 MFCNxxD.dll (xx 是版本編號)。您必須為每個用於標準 DLL 的 CWinApp::InitInstance 中的 DLL 呼叫下列預先定義初始化函式其中之一。
MFC 支援的類型 |
要呼叫的初始化函式 |
---|---|
MFC OLE (MFCOxxD.dll) |
AfxOleInitModule |
MFC 資料庫 (MFCDxxD.dll) |
AfxDbInitModule |
MFC 通訊端 (MFCNxxD.dll) |
AfxNetInitModule |