簡體   English   中英

在Visual C ++中將Win32 .lib與x64項目一起使用

[英]Using a win32 .lib with a x64 project in Visual C++

我有一個C ++庫( 在此處下載)。 在庫中,有一些“ .h”頭文件,包含代碼的“ .cc”文件和包含在“ win32”文件夾中的兩個靜態“ .lib”文件。 我只在Visual Studio 2012 C ++中執行x64項目。

為了使用該庫,我在屬性頁的“其他包含目錄”中指定了.h文件的路徑。 在“其他庫目錄”中,我指定了包含兩個“ .lib”文件的文件夾的路徑。 在“其他依賴項”中,我放置了在“其他庫目錄”中可以找到的所有“ .lib”文件的名稱。 在“調試”模式下,我使用庫的調試版本(如果有)。

在代碼中,我添加了一個#include <brisk.h>來指示我要使用該庫。 我也使用其他庫,但它們不會導致任何錯誤。

現在,我有一個

"LNK2019 unresolved external symbol "public: __cdecl cv:: ...etc" 

編譯時出錯。 我想知道這是否可能是由於某些“ .lib”可能是在win32而不是x64中編譯的事實引起的。 那可能是錯誤嗎?

如果很明顯我做錯了,請給我小費。 我已經咨詢了這個問題,但是我不確定...

編輯:

這是編譯器的輸出:

1>------ Build started: Project: BRISK_opencv2, Configuration: Debug x64 ------
1>  BRISK_opencv2.cpp
1>BRISK_opencv2.obj : error LNK2019: unresolved external symbol "public: __cdecl cv::BriskDescriptorExtractor::BriskDescriptorExtractor(bool,bool,float)" (??0BriskDescriptorExtractor@cv@@QEAA@_N0M@Z) referenced in function main
1>BRISK_opencv2.obj : error LNK2019: unresolved external symbol "public: __cdecl cv::BriskFeatureDetector::BriskFeatureDetector(int,int)" (??0BriskFeatureDetector@cv@@QEAA@HH@Z) referenced in function main
1>C:\...\x64\Debug\BRISK_opencv2.exe : fatal error LNK1120: 2 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

您不能在同一過程中使用32位和64位代碼。

鏈接器應告訴您,由於體系結構不兼容,鏈接器是否正在跳過您指示使用的輸入文件。 讀取所有鏈接器輸出,而不僅僅是錯誤。

采用

dumpbin win32.lib /headers

以機器開頭的行將告訴您期望使用哪種架構

在FILE HEADER VALUES的末尾,在OPTIONAL HEADER VALUES之前,它將告訴您期望使用32位還是64位。

可能是該庫用於64位,但使用IA64而不是X64。 那仍然是不兼容的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM