我有我爲我的應用程序設置以下方式解決 - (我使用Visual Studio,這是一個VC++項目)EXE和DLL共享相同的靜態庫
注:藍項目被編譯爲靜態庫。
正如你所看到的,exe和dll共享一些靜態庫(core.lib和utils.lib) 並且exe依次使用DLL(通過使用導入庫的「加載時動態鏈接」)。
我的問題是它是一個正確的依賴關係,設置有哪些? 我看到的問題是,當這個應用程序啓動並運行,會有進程地址空間權的一些重複的代碼?意思是,Core.lib和Utils.lib中的所有函數都會顯示兩次?因此,Exe和DLL會將這些代碼分別編譯到它們中。
如果是,處理上述問題的一個方法是將獨有的DLL或保持EXE並分享它的代碼(B/W EXE和DLL)通過導入/導出。 但我有核心和utils的很多類對象,我不喜歡導出/導入這些類對象的想法(通過附加__declspec(dllimport的/ DLLEXPORT))在頭文件和除了我可能最終會加入這許多依賴類對象
這是我的理解,我可能是錯的。請提出更正建議,以及處理這些問題的常用方法是什麼?
Regards,
我有這個「問題」,並決定,只要重複的代碼是比較小的,這是可以接受的。如果重複代碼是巨大的,那麼你應該將其捆綁,而不是作爲一個共享庫......但你可能碰上依賴地獄如果'ALGO-DLL'需要一個不同版本的庫比呢'App'。 –