2010-10-27 102 views
2

我正在評估將程序從30個靜態鏈接庫改爲30個動態鏈接庫的好處。我們希望通過更改爲DLL,它會減少鏈接時間。在窗口下將靜態鏈接庫轉換爲動態鏈接庫

一個直接的問題是在所有類別中的前面加上__declspec創建其他DLL鏈接的lib文件的要求。有沒有辦法解決這個問題?在編譯器中是否有一個強制生成lib的標誌,以便使DLL中的所有類都可用於導出?如果沒有,是否有任何現有的腳本/程序會這樣做?這肯定會使從靜態鏈接庫切換到動態鏈接庫變得更容易。如果沒有,__declspec背後的基本原理是什麼?爲什麼不選擇將所有dll函數導出?

謝謝。

回答

0

還有另一種解決問題的方法。

您只需要創建一個定義文件(.def)並導出所有想要共享的方法或類。

U也必須設置: 屬性 - >連接器 - >輸入 - >模塊定義文件 - >添加您創建的.def文件的名稱。

現在使用運行時動態鏈接: 在您要調用導出方法的項目中,使用LoadLibrary獲取您的Dll的句柄並使用GetProcAddress調用所需的方法。