2011-11-23 56 views
1

assimp的分配附帶一個lib文件夾。此文件夾包含以下子文件夾:如何配置visual studio 2008以根據配置選擇正確的.lib?

assimp_debug-dll_win32 
assimp_debug-dll_x64 
assimp_release-dll_win32 
assimp_release-dll_x64 

每個文件夾都有一個文件assimp.lib。如何根據我的配置(調試/發佈)包含正確的庫?目前,assimp位於我的項目之外的一個文件夾中,並且我添加了工具 - >選項 - > VC++目錄 - >庫文件的路徑,但我不確定其工作。

+0

如果你去項目屬性,每個配置(調試/發佈...)有它自己的一套設置。您可以轉到各個配置的鏈接器選項並設置其他庫依賴關係。 –

回答

2

您應該將庫目錄添加到項目本身,而不是作爲Visual Studio中的全局設置。

要做到這一點,您可以右鍵單擊解決方案資源管理器中的項目。然後在VC++目錄下,添加正確的assimp路徑。您應該將與當前(即調試或版本/ win32或x64)設置相對應的路徑添加到此列表中。在頂部應該有一個下拉菜單來選擇你正在編輯的當前配置。

無論如何,這適用於VS2010,我不是100%確定VS2008。如果VC++目錄部分不存在,則庫路徑可能位於項目設置 - >鏈接器 - >常規 - >其他庫目錄中。

+0

如果我將路徑添加到項目設置中,則很難共享該項目。我想我應該在我的項目文件夾內複製庫和頭文件,對嗎? – subb

+0

這是處理它的一種方式。您也可以將所有外部庫複製到獨立位置,然後使用環境變量或.vsprops文件中包含的屬性來指定項目設置中的位置。然後任何其他用戶只需編輯.vsprops文件/將環境變量設置爲外部庫的位置即可。 – obmarg

+0

對於.vsprops選項,您可能希望在MSDN上閱讀以下內容:http://msdn.microsoft.com/en-us/library/a4xbdz1e%28v=VS.90%29.aspx或部分鏈接和這個問題的答案:http://stackoverflow.com/questions/2284265/how-to-use-vsprops-file-to-override-vc-directories-in-ms-visual-studio – obmarg

1

您應該使用properties - > linker - > additional include directories來分支每個構建配置的包含路徑。這將解決您的問題。

輔助選項是使用#pragma comment(lib,"<lib name>")並使用要鏈接到的庫的路徑,然後使用#if/#endif您可以基於當前的構建版本進行分支。

你可以使用依賴walker,進程管理器或任何調試器來測試它。

+0

如果已添加到VC++設置的第一個路徑肯定是正確的.lib文件的路徑,那麼此方法只能正常工作?由於。libs都有相同的文件名,VC++不會只是選擇第一個,不管它是否是正確的?或者我低估它的智能 – obmarg

+0

@obmarg:我誤解了他的帖子,儘管他編輯了*每build *設置,改變它反映我雖然他做了... – Necrolis

1

你可以使用預處理程序指令做:

#ifdef __DEBUG 
#pragma comment(lib,"c:/Path/assimp_debug-dll_win32/assimp.lib") 
#else 
#pragma comment(lib,"c:/Path/assimp_release-dll_win32/assimp.lib") 
#endif 
+0

這應該解決調試和發佈構建的問題(我沒有測試)。我還注意到一些庫可以根據C++運行時庫是否靜態鏈接來選擇它們的lib文件。你知道他們是如何做到的嗎?或者在這種情況下可以定義什麼宏? – fefe

+1

恐怕我不知道,但一個快速的谷歌把我帶到[此mskb文章](http://support.microsoft.com/kb/140584),我不知道這是否會有所幫助。回到主要問題,可以使用_WIN64和_WIN32宏來爲VS2008中的x86/x64版本選擇正確的lib。 – TVOHM

+0

哦,謝謝。這正是我想要的。 – fefe

相關問題