2010-10-16 63 views
34

我繼承了大量的代碼,其中包括一個應該(盡我所能地說)構建.lib文件的Visual Studio項目。 Visual Studio說:「...生成代碼...創建庫...創建瀏覽信息文件...」,並在最後說,它表示構建成功。在release/debug文件夾中,它有一堆.obj文件,但它沒有.lib文件。我可能會錯過什麼?構建成功,但沒有創建.lib文件

謝謝!

回答

47

打開項目屬性(右鍵單擊解決方案資源管理器中的項目,選擇'屬性')。在'圖書管理員'下,檢查'輸出文件' - 這是輸出應該去的地方。

如果看起來不錯,請在您的項目的適當子目錄中嘗試dir /s *.lib,以查看是否可以按日期和時間查找輸出庫。如果你仍然無法找到它,請嘗試一個乾淨的重建(右鍵單擊項目,選擇'重建')。

對於DLL,如果DLL沒有爲外部使用導出任何內容,則不會創建.Lib文件。我不認爲這適用於靜態lib構建,但我會確保您從您的庫項目源代碼中導出一些公開的內容。

+1

令人敬畏。沒有你們,我不知道我會做什麼!是的,問題在於圖書管理員,之前的開發人員對他的主目錄進行了硬編碼。愚蠢的人。 – Jim 2010-10-16 20:57:21

+16

「對於DLL,如果DLL沒有爲外部使用導出任何內容,則不會創建.Lib文件。」 - 那是我的問題。我通過重新配置頭文件並丟失了我的__declspec(dllexport)宏來丟失我的.lib文件。 – ken 2013-09-30 16:30:27

+0

爲什麼當它是一個靜態庫時必須聲明dllexport? – 2014-06-29 15:23:17

11

我的靜態庫只包含兩個模板類,所以我沒有.cpp文件。這導致Visual Studio 2015不輸出.lib文件。爲了解決這個問題,我創建了一個包含所有頭文件的文件huh.cpp。

+1

在VS2015想要生成.lib文件之前,我必須將現有文件添加到「頭文件」和「源文件」過濾器。 – oddRaven 2016-12-14 21:47:55

1

我剛剛遇到了這個問題。

這是由於在輸出目錄定義中使用了無效的宏。就我而言,這是 enter image description here

時,它應該是

enter image description here

我不得不空出的完整路徑在第二截屏。我有一個不正確的宏。當我應該使用MsBuildProjectDirectory時,我正在使用MsBuildProjectDir。當輸出目錄有效時,只讀文本框將顯示完整路徑(例如:C:\Development\blah\blah\blah\)。如果輸出目錄無效,則會得到類似於第一個屏幕截圖的內容。

5

如果您錯過爲方法添加前綴__declspec(dllexport),.lib將不會生成。

相關問題