簡體   English   中英

DLL Project不生成.exp和.lib文件

[英]DLL Project doesn't generate .exp and .lib file

所以,我有一個c ++解決方案,其中包含3個項目(2個DLL和1個.exe)。

這是基本的依賴表示:

應用程序 - > DLL2

應用程序 - > DLL1

DLL2 - > DLL1

我遇到的問題是DLL2(構建它時)確實生成.dll但不生成.lib和.exp我需要在Application項目中正確引用DLL2。 但是,DLL1確實生成了這些文件,並且我已經將DLL1的設置與DLL2進行了比較,但我無法找到它們之間的區別。

對此的簡單解釋是您忘記導出任何東西。 如果沒有導出,鏈接器將不會創建.lib / .exp文件。 您可以通過在DLL上運行dumpbin.exe /exports來驗證這一點。 期待你什么也看不見。

使用__declspec(dllexport)從DLL導出符號。 或.def文件。

問題是DLL2只有.h文件,並且沒有任何關聯的.cpp文件中的內容。 因此IDE沒有看到創建.lib文件的必要性。

我剛剛發現了另一種導致同樣事情發生的方法。 我將我開發並測試的一些例程作為另一個DLL中的服務例程移動到他們自己的DLL中。 由於此舉是在我編寫第一行代碼之前計划的,因此它們沒有標記為導出,因此使用該項目的默認調用約定__cdecl。 當我構建庫時,構建環境沒有創建.LIB文件。 經過一些調查,並在本主題中提到__declspec(dllimport)的啟發后,我意識到,雖然我將聲明移動到New Project Wizard生成的模板頭文件中,但我忘了插入生成的調用約定的名稱宏進入原型。

在指定了調用約定的頭文件和包含實現的CPP文件中,我得到了預期的.LIB文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM