2012-11-08 40 views
0

我有一個Visual Studio項目。這很簡單,而且很有效。但是,我們正在將我們的代碼移植到64位。我有這個簡單的項目編譯,但它無法鏈接:如何確定項目在Visual Studio中鏈接特定庫的位置?

fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64' 

這告訴我它試圖鏈接庫的版本錯誤。它應該鏈接64位庫,但它試圖鏈接32位庫。這顯然是錯誤的。

我的問題是,我不知道我的項目在哪裏決定鏈接該庫。我看了:

  • 項目屬性,道具文件。儘管指定了lib路徑,但沒有指定lib名稱。
  • 項目屬性 - >鏈接器 - >命令行。也沒有。
  • 我已經通過頭文件尋找某種#pragma comment(lib,),但我找不到任何用途。

我還能在哪裏看?有沒有辦法讓Visual Studio告訴我它是如何決定在不同的庫中鏈接的?

不確定它是否相關,但這是一個使用CppUnit的小型單元測試項目。它鏈接cppunit-vc100-MTd.lib當它應該鏈接cppunit-vc100-x64-MTd.lib

回答

1

在您的項目屬性頁上,在鏈接器,常規下,將項目鏈接進度報告設置爲任何你需要顯示被命中的庫。/VERBOSE或/ VERBOSE:lib可能會做你想做的事。

的與/ VERBOSE輸出窗口中顯示的輸出示例:LIB

1> Searching libraries 
1>  Searching D:\winsdk\lib\kernel32.lib: 
1>  Searching D:\winsdk\lib\user32.lib: 
1>  Searching D:\winsdk\lib\gdi32.lib: 
1>  Searching D:\winsdk\lib\winspool.lib: 
1>  Searching D:\winsdk\lib\comdlg32.lib: 
1>  Searching D:\winsdk\lib\advapi32.lib: 
1>  Searching D:\winsdk\lib\shell32.lib: 
1>  Searching D:\winsdk\lib\ole32.lib: 
1>  Searching D:\winsdk\lib\oleaut32.lib: 
1>  Searching D:\winsdk\lib\uuid.lib: 
1>  Searching D:\winsdk\lib\odbc32.lib: 
1>  Searching D:\winsdk\lib\odbccp32.lib: 

等。

而且,你可能在你的源代碼樹頭文件,它帶來的是文件在通過

#pragma comment (lib, "cppunit-vc100-MTd.lib") 

但應該是很容易通過搜索在文件中查找擊中include路徑,這是在配置文件中找到罐裝選項之一。

+0

/VERBOSE:lib顯示正在使用的庫的列表,這爲我提供了另一種確認鏈接錯誤庫的方法。但是這並不能幫助我找出它從哪裏得到的名單。我會嘗試/ VERBOSE(但這是很多輸出篩選)。 – Tim

+0

@Tim現在我看到了違規的庫,我很確定它*是一個#pragma註釋,因此請打開該lib名稱的包含路徑中的所有.h/hpp/inl文件的全文搜索。我想你會找到它。 (手指交叉) – WhozCraig

+0

我搜索了我的整個代碼庫,整個cppunit包含路徑,查找'pragma。* comment。* lib',但沒有運氣。 – Tim

相關問題