2012-04-23 108 views
1

我希望在項目中使用一些外部庫:libpng和libvorbis。現在,在Linux上,我可以高興地構建這些文件,只需將配置文件添加到scons以允許額外的include/lib路徑,如果您想在系統包含路徑之外構建它們。Visual Studio 2010中的外部庫

然而,MSVS 2010似乎是有點挑剔:

  • 我可以再補充這些庫到VC++的用戶屬性頁上的目錄的發行版本的路徑,但是這是不行的用於靜態鏈接(因爲調試版本需要鏈接到調試配置)。
  • 我可以在項目中添加絕對路徑,但這意味着該項目不可移植。
  • 我可以添加libpng目錄(例如),然後將Debug\libpng.lib放在鏈接器輸入中,但它找不到符號。據推測,這是因爲\而導致的相對路徑。

我目前的解決方案是將所有我需要的庫複製到當前項目的解決方案目錄中;我甚至可以把它們硬連接在一起,但這看起來很愚蠢。

我可以做些什麼來保持我的項目便攜,並參考絕對包括/ lib路徑每配置

如果你想添加庫的相對路徑,與前面加上(如果能夠故意放的路徑中或名爲.suo文件。用戶將是真棒,例如。)

回答

1

「 \」從基礎項目目錄開始;

".\Lib\Debug\libpng.lib" 

或「.. \」來引用父目錄。

"..\Lib\Debug\libpng.lib" 

需要注意的是,如果你的庫位於父目錄的父目錄,那麼你可以鏈中的「.. \」引用起來:

"..\..\Lib\Debug\libpng.lib" 
+0

我已經使用相對路徑,我想知道如何做絕對路徑,而不是以每個項目爲基礎。 – Ricky26 2012-04-23 19:00:36

+0

通過導航到「工具 - >設置 - >項目和解決方案 - > VC++目錄」,可以在Visual Studio全局設置中設置絕對庫路徑。 事實證明,對於實施可安裝到不同計算機上不同位置的常用SDK的項目,這是相當普遍的做法。那是你在說什麼?如果是這樣,我會重新發布答案。 – BTownTKD 2012-04-24 00:43:47

+0

這與VS2010一起被刪除,它也不允許每個配置目錄,所以仍然不能用於靜態鏈接。 – Ricky26 2012-04-24 17:08:15