我使用Point Grey的FlyCapture库有一些简单的代码:
#include <iostream>
#include "FlyCapture2.h"
using namespace std;
int main(){
cout << "Hello World!";
FlyCapture2::BusManager m;
return 0;
}
上面的代码在编译时给出了这些链接错误:
1>------ Build started: Project: CJMVideo, Configuration: Release Win32 ------
1>Compiling...
1>CJMVideo.cpp
1>Linking...
1>CJMVideo.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall FlyCapture2::BusManager::~BusManager(void)" (__imp_??1BusManager@FlyCapture2@@UAE@XZ)
1>CJMVideo.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall FlyCapture2::BusManager::BusManager(void)" (__imp_??0BusManager@FlyCapture2@@QAE@XZ)
1>C:\Users\Akihiro\Documents\Visual Studio 2008\Projects\CJMVideo\Release\CJMVideo.exe : fatal error LNK1120: 2 unresolved externals
1>Build log was saved at "file://c:\Users\Akihiro\Documents\Visual Studio 2008\Projects\CJMVideo\CJMVideo\Release\BuildLog.htm"
1>CJMVideo - 3 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
我已将FlyCapture的目录添加为VS2008选项中的库目录,并且我已将这些库添加为项目设置下的附加依赖项。
我的下一步调试是什么?我很茫然。
谢谢,
答案 0 :(得分:0)
@Surgio:
我解决了我的问题,所以我想我会给你一个更新。我的问题原来是我的Visual Studio使用32位编译器但是尝试从64位库编译。
您可能已经这样做了,但只是大小写,请确保您(1)在VS中添加了库位置,并且(2)确保在项目设置下将库添加为其他依赖项。
答案 1 :(得分:0)
在Visual Studio属性中,确保编译器知道其他库目录所在的位置,否则可能会出现您所描述的链接器错误。
具体来说,您可以通过设置项目属性 - &gt;来完成此操作。链接器 - &gt;一般 - &gt;其他图书馆目录。您需要告诉它库目录所在的位置。例如,对于FlyCapture SDK v2.2安装,通常在:
C:\ Program Files \ Point Grey Research \ FlyCapture2 \ lib
另一件事,即使您在64位平台上工作,例如,如果您选择将WinCapture应用程序作为Win32控制台运行,您可能仍需要下载并使用32位版本的任何东西您正在使用的FlyCapture SDK,而不是64位版本。只是一个想法。
有关开始使用FlyCapture设置的更详细说明,请参阅此blog posting,这些设置当时是在Windows XP 32位环境中的VS2008中完成的,但是应用它不应该太难在更新版本的Visual Studio上为64位。任何反馈都非常赞赏。