2012-02-23 28 views
0

我正在使用visual studio 2008.我想在源代碼中使用C++庫。在我的電腦上安裝庫後,我有一些包含文件以及一些庫文件。另外,在bin文件夾中還有msvcm80.dll,msvcp80.dll和msvcr80.dll。使用.lib文件構建項目的奇怪行爲

我在連接下面解釋的項目時遇到問題。我在網上搜索,但我沒有找到我的問題的相對答案。

我做了以下程序:

  1. 我用資源管理器庫軟件,並發現該.lib文件是建立在發佈配置。

  2. 我將visual studio解決方案構建在32位的發佈模式中。我不確定我是否應該使用32或64.(下面我解釋了將此更改爲x64平臺時會發生什麼情況)。

  3. 我將庫文件添加到其他庫目錄中的鏈接器依賴項及其路徑。

  4. 我在源代碼中包含頭文件。

  5. 當我嘗試構建解決方案時,我在我的源代碼中調用的函數上收到錯誤「LNK2001:無法解析的外部符號」。即使我刪除庫依賴關係並在鏈接器配置中刪除它們的路徑,我也會得到相同的錯誤。

我的問題是,爲什麼鏈接器沒有在我的源代碼庫文件中找到被調用函數?

當我將平臺從Win32更改爲x64時,出現錯誤LNK 2001,但在另一個函數上。區別在於鏈接器正在抱怨我的源代碼中沒有直接調用的函數。

有人能幫我找出這個錯誤的原因嗎?如果我沒有清楚解釋我的問題,請告訴我。

感謝,

艾哈邁德

+0

也許這是一個C庫,所以你必須編寫#include extern「C」{}這只是猜測,請聯繫庫所有者以獲得支持。 – 2012-02-23 12:04:08

+0

這是一個C++庫。我會很感激你的想法。 – AFP 2012-02-23 17:22:58

回答

0

你必須給可能的錯誤消息(第一)的一些細節。

在VS中正確獲取鏈接器設置從來都不是一件容易的事。有幾點可以檢查:

如果用winsock的庫
  • ,檢查這是首次列入等(著名WINSOCK.H VS winsock2.h)

  • 檢查平臺工具集(在你的情況它應該可能是v80)

  • 最後也是最重要的一點,如果缺失的外部元件是Windows API,可能需要在Linker \ Additional Dependencies中指定如下內容:User32.lib,Shell32.lib,Oleaut32.lib,Advapi32 .lib取決於使用的API。