繁体   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