我有一个C ++库(已下载here)。在库中,有一些“.h”头文件,“。cc”文件包含代码和两个静态“.lib”,它们包含在“win32”文件夹中。我在Visual Studio 2012 C ++中只完成了一个x64项目。
为了使用该库,我在属性页的“Additional Include Directories”中指定了.h文件的路径。在“其他库目录”中,我指定了包含“.lib”文件的文件夹的路径。在“附加依赖项”中,我将所有“.lib”文件的名称放在“附加库目录”中。在“调试”模式下,我使用库的调试版本(如果可用)。
在代码中,我添加一个#include< brisk.h>表示我想使用该库。我也使用其他库,但它们不会导致错误。
现在,我有一个
"LNK2019 unresolved external symbol "public: __cdecl cv:: ...etc"
编译时出现错误。我想知道这个是否是由某些“.lib”可能在win32而不是x64中编译的事实引起的。这可能是错误吗?
如果很明显我做错了什么,请给我小费。我咨询了this question,但我不太确定......
修改:
以下是编译器的输出:
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 ==========
答案 0 :(得分:1)
您不能在同一进程中使用32位和64位代码。
链接器应该告诉您它是否正在跳过您指示它使用的输入文件,因为架构不兼容。读取所有链接器输出,而不仅仅是错误。
答案 1 :(得分:1)
使用
dumpbin win32.lib /headers
从机器开始的行将告诉您它所期望的架构
在FILE HEADER VALUES结束时,在OPTIONAL HEADER VALUES之前,它会告诉你它是否需要32位或64位。
可能是lib是64位而是IA64而不是X64。那仍然是不相容的。