從 Visual Studio 向導創建 MFC DLL 和創建 C 控制臺應用程式并將配置型別更改為 DLL 而不是 .exe 有什么區別?

uj5u.com熱心網友回復:
您當然可以弄清楚如何將控制臺應用程式更改為 dll 型別,但建議使用非 MFC DLL 專案模板。
非 MFC 和 MFC 擴展 DLL 之間的一個主要區別是,它允許通過呼叫將對話框模板或位圖等資源共享到 MFC 應用程式
// MFC extension DLL one-time initialization
AfxInitExtensionModule(PROJNAMEDLL, hInstance);
// Insert this DLL into the resource chain
new CDynLinkLibrary(Dll3DLL);
在DllMain(). 其他好處是您可以使用CObject位于 dll 中的 MFC(-派生)類,并且 MFC 擴展 DLL 可以與呼叫實體共享記憶體地址空間,這意味著加載相同擴展 DLL 的兩個應用程式將僅共享代碼,但不會干擾分配的資料。
請注意,您需要“共享 MFC DLL”專案設定才能使用擴展 DLL。將 MFC 靜態鏈接到您的專案中是行不通的。因此,擴展 DLL 旨在在同時運行的不同應用程式之間共享代碼,例如,但只使用一次代碼記憶體。至少在引入擴展 DLL 時,這種代碼重用方式是一種意圖,但在現實世界中,不同的應用程式傾向于使用不同的版本(dll 地獄,并排)。說到:擴展 DLL 的一個很好的用途是僅通過安裝不同版本的 dll 來自定義應用程式(品牌、本地化)。
進一步閱讀:https ://docs.microsoft.com/en-us/cpp/build/extension-dlls
uj5u.com熱心網友回復:
根據創建 MFC DLL 專案,它指出:
MFC DLL 是一個二進制檔案,它充當多個應用程式可以同時使用的共享函式庫。創建 MFC DLL 專案的最簡單方法是使用 MFC DLL 向導。
This article Kinds of DLLs還指出:
使用 Visual Studio,您可以在不使用 Microsoft 基礎類 (MFC) 庫的 C 或 C 中構建 Win32 DLL。您可以使用 Win32 應用程式向導創建非 MFC DLL 專案。
MFC 庫本身可通過 MFC DLL 向導在靜態鏈接庫或許多 DLL 中使用。如果您的 DLL 使用 MFC,Visual Studio 支持三種不同的 DLL 開發方案...
我相信上面解釋了差異:
- DLL 的一個版本公開了 MFC 庫。
- 一個版本沒有。
這是我的理解。
其他相關文章:在 Visual Studio 中創建 C/C DLL
uj5u.com熱心網友回復:
應用程式(可執行檔案)是可以運行的模塊。它包含一個入口點,即main()(控制臺)或WinMain()(Windows GUI)函式。可執行檔案的運行實體在 Win32中稱為“行程” 。
DLL 是一個庫,旨在供其他應用程式使用。它在運行時加載 - “動態”,因此得名。DLL 不包含主入口點,而是“匯出”函式甚至類和資料。缺少主入口點,DLL 不能獨立運行,而是“加載到行程(應用程式)的地址空間中”。該程序可以使用他們匯出的專案。這是實作常用操作的好方法,例如公司的“開發環境”或“基礎”——SDK 通常以 DLL 的形式實作。
MFC 是一個包含 GUI(和其他)類和函式的 C 庫,主要(但不限于)包裝 Win32 物件。應用程式或 DLL 可以使用 MFC 庫,也可以不使用。
至于您的問題,創建控制臺應用程式然后將其更改為 DLL 是沒有意義的。向導將創建一個main()函式,您必須手動洗掉該函式。最后,您將擁有一個普通的 DLL……您可以從一開始就簡單地創建一個 DLL,無論它是否使用 MFC。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/489223.html
下一篇:MSBUILD:配置錯誤MSB4148“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0”長度為零
