我有一些使用Point Gray的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 ==========我已经在VS2008的选项中添加了FlyCapture的目录作为库目录,并且在项目设置下添加了库作为额外的依赖项。
我要调试的下一步是什么?我不知所措。
谢谢,
发布于 2010-09-26 10:52:39
@Surgio:
我解决了我的问题,所以我想我应该告诉你最新情况。我的问题原来是我的Visual Studio使用32位编译器,但试图从64位库进行编译。
您可能已经这样做了,但为了以防万一,请确保(1)在VS中添加库位置,(2)确保将库作为附加依赖项添加到项目设置下。
发布于 2012-06-09 20:04:28
在Visual Studio属性中,确保编译器知道其他库目录所在的位置,否则很可能会得到您所描述的链接器错误。
具体来说,您可以通过设置项目属性->链接器->常规->附加库目录来完成此操作。您需要告诉它库目录位于何处。例如,对于FlyCapture SDK v2.2安装,通常位于:
C:\Program Files\Point Grey Research\FlyCapture2\lib
还有一件事,即使您在64位平台上工作,例如,如果您选择将FlyCapture应用程序作为Win32控制台运行,您可能仍然需要下载和使用您正在使用的FlyCapture SDK的32位版本,而不是64位版本。这只是个想法。
有关FlyCapture安装入门的更详细的解释,请参见此blog posting,当时该安装是在Windows XP 32位环境中用VS2008完成的,但是在更新版本的Visual Studio上将其应用于64位应该不会太难。任何反馈都非常感谢。
https://stackoverflow.com/questions/3743621
复制相似问题