2013-04-09 66 views
1

我有一個很奇怪的問題。我在VS2012中有一個與其他庫靜態鏈接的項目。 如果我建立項目一切都很好。 但是,如果我重建項目,它將失敗並出現鏈接問題。 這個lib是編譯的,我不在編譯期間編譯它。 如果我清除所有內容或在先前的構建之上構建/重建,這並沒有什麼不同。 建造作品,重建 - 不是!在Visual Studio 2012中重建時出現奇怪的鏈接錯誤

任何人都可以給我至少一條線索 - 這兩條命令有什麼不同?我甚至不知道如何開始調查問題。

補充:

要全部回答的人 - 你是試圖解釋我的構建和重建之間的差異。謝謝,但我知道。你忽略了我之前解釋過的事實:

我可以完全清除以前的結果,刪除OutDir,刪除IntDir,刪除編譯產生的所有東西。仍然 - 建立工作,不重建。

在上面解釋的案例中 - 如果您第一次構建,構建和重建有什麼區別?

我沒有發佈錯誤的原因是那些只是鏈接錯誤告訴我.lib丟失。雖然它顯然不是。

這裏是例子:

1> C:\ Program Files文件(x86)的\微軟的Visual Studio 11.0 \ VC \ \包括sal.h(2872):警告RC4005: '_ useHeader' :重新定義 1>
1> C:\ Program Files文件(x86)的\微軟的Visual Studio 11.0 \ VC \ \包括sal.h(2882):警告RC4005: '
_on_failure':重新定義 1>
1>創建庫D:\ p4client \ ProAudio \ dev_main \ ProAudio \ XPlatform .. \ VisualStudioBuildProducts \ WaveShell-DAE \ Win32 \ Debug \ Products \ WaveShell-DAE.lib和對象D:\ p4client \ Pro Audio \ dev_main \ ProAudio \ XPlatform .. \ VisualStudioBuildProducts \ WaveShell-DAE \ Win32 \ Debug \ Products \ WaveShell-DAE.exp 1> DefaultSwap.obj:error LNK2019:無法解析的外部符號_ASI_UnregisterCustomByteSwapper @ 4在函數中引用_RemoveByteSwapper 1> DefaultSwap.obj:錯誤LNK2019:解析外部符號_ASI_RegisterCustomByteSwapper @ 8在功能_RegisterByteSwapper引用 1> PlugInLib.lib(PlugInUtils.obj):錯誤LNK 2001:解析外部符號_ 小鬼 _FicGestalt @ 8 1> PlugInLib.lib(CDSPProcess .OBJ):錯誤LNK 2001:解析外部符號_ 小鬼 _FicGestalt @ 8 1> PlugInLib.lib(CAdaptorPlugIn.obj):錯誤LNK 2001:解析外部符號_ imp的 _FicGestalt @ 8 1> CShellProcessGroup.obj:錯誤LNK2019:解析外部符號_ 小鬼 _FicGestalt @ 8函數引用 「公共:__thiscall CShellProcessGroup :: CShellProcessGroup(無效)」(?? 0CShellProcessGroup @@ @ QAE XZ) 1> CEffectTypeRTAS.obj:錯誤LNK2001:解析外部符號_ 小鬼 _FicGestalt @ 8 1> PlugInLib.lib(CProcessGroupInterface.obj):錯誤LNK 2001:解析外部符號_ 小鬼 _FicGestalt @ 8 1> PlugInLib。LIB(CProcessGroup.obj):錯誤LNK2001:解析外部符號_ 小鬼 _FicGestalt @ 8

也許這將有助於知道,在運行建立(不重建)我會得到以下警告:

1> C:\ Program Files文件(x86)的\微軟的Visual Studio 11.0 \ VC \ \包括sal.h(2872):警告RC4005: '_ useHeader':重新定義 1>
1> C:\ Program Files文件(x86)的\微軟的Visual Studio 11.0 \ VC \包括\ sal.h(2882):警告RC4005: '
_on_failure':重新定義 1>
1>創建庫D:\ p4client \ ProAudio \ dev_main \ ProAudio \ XPlatform .. \ VisualStudioBuildProducts \ WaveShell-DAE \ Win32 \ Debug \ Products \ WaveShell-DAE.lib和對象D:\ p4client \ ProAudio \ dev_main \ ProAudio \ XPlatform .. \ VisualStudioBuildProducts \ WaveShell-DAE \的Win32 \調試\產品\ WaveShell-DAE.exp 1> PlugInLib.lib(C321ChipDSP.obj):警告LNK4099:PDB 'vc110_ib_2.pdb' 不是用「PlugInLib找到。 lib(C321ChipDSP.obj)'或'D:\ p4client \ ProAudio \ dev_main \ ProAudio \ VisualStudioBuildProducts \ WaveShell-DAE \ Win32 \ Debug \ vc110_ib_2.pdb';警告LNK4099:PDB 'vc110_ib_3.pdb' 沒有與 'PlugInLib.lib(CDSP.obj)' 或「d發現:就好像沒有調試信息 1> PlugInLib.lib(CDSP.obj)鏈接對象\ p4client \專業音響\ dev_main \專業音響\ VisualStudioBuildProducts \ WaveShell-DAE \的Win32 \調試\ vc110_ib_3.pdb';警告LNK4099:PDB 'vc110_ib_4.pdb' 沒有與 'PlugInLib.lib(CDSPUtils.obj)' 或「d發現:就好像沒有調試信息 1> PlugInLib.lib(CDSPUtils.obj)鏈接對象\ p4client \專業音響\ dev_main \專業音響\ VisualStudioBuildProducts \ WaveShell-DAE \的Win32 \調試\ vc110_ib_4.pdb';如同沒有調試信息一樣鏈接對象

謝謝!

+0

你可以退出你的問題,包括錯誤重建報告嗎? – simonc 2013-04-09 14:32:37

+0

什麼是錯誤? – 2013-04-09 14:35:57

+0

針對您的特定問題,請發佈您遇到的錯誤。就目前而言,你的問題似乎是「Build和Rebuild有什麼區別?」這可以回答[這裏](http://stackoverflow.com/questions/3095901/difference-between-build-solution-rebuild-solution-and-clean-solution-in-visua) – quandrei 2013-04-09 14:45:06

回答

1

構建手段編譯和鏈接只有自上次編譯後更改過的源文件,而重建指編制,也不管他們是否更改或不連接所有的源文件。

構建是正常的事情,速度更快。有時,項目目標組件的版本可能會不同步,重建對於構建成功是必要的。在實踐中,你永遠不需要清潔。

0

「建設」將做增量構建,通過在解決方案中每個項目基本上會,看看是否出現了自上一次創建的變化,如果有,又建立它。

'重建'將執行一切乾淨,從頭開始構建一切。

編輯:更詳細的答案link

0

如果你的靜態庫在同一個解決方案,作爲鏈接到lib項目中的另一個項目,那麼你就需要設置兩個項目之間的依賴關係,構建進程將首先構建lib,然後再構建其他項目。

要做到這一點,在解決方案ABD右鍵單擊然後從彈出菜單中選擇「項目依賴」。