在Linux中安装和链接库(Flycapture2)时出错:未定义参考

时间:2019-06-28 05:49:57

标签: c++ linux cmake compiler-errors linker

我一直试图在Linux(在jetson TX2上)上安装flycapture2库。但这确实是一个Linux问题,我不认为这是特定于平台或程序的。我的目标是能够包含文件并进行编译,但此刻我得到的是对类型链接器错误的未定义引用。

我正在使用CMake进行编译。在我的cmakelist中,我将/ usr / include / flycapture添加为包含目录。

我已经完成以下尝试安装:

-我运行的程序最初是在下载时运行的,一切都很好。

-我将flycapture的/ include目录复制到/ usr / include / flycapture

-(这似乎是错误的)我将flycapture的/ lib目录复制到/ usr / lib。这包括.so和.a文件。

就是这样。对我来说似乎错了,但我不知道为什么。

我复制到/ usr / include / flycapture的文件:

nvidia@tegra-ubuntu:/usr/include/flycapture$ ls
BusManager.h  Camera.h           FlyCapture2GUI.h       FlyCapture2VideoDefs.h  Image.h            Utilities.h
C             Error.h            FlyCapture2.h          FlyCapture2Video.h      ImageStatistics.h
CameraBase.h  FlyCapture2Defs.h  FlyCapture2Platform.h  GigECamera.h            TopologyNode.h
nvidia@tegra-ubuntu:/usr/include/flycapture$ 

和/ usr / lib(仅显示相关文件):

libflycapture-cd_static.a     libflycapturegui-cd_static.a     libflycapturevideo-cd_static.a
libflycapture-c.so            libflycapturegui-c.so            libflycapturevideo-c.so
libflycapture-c.so.2          libflycapturegui-c.so.2          libflycapturevideo-c.so.2
libflycapture-c.so.2.13.3.31  libflycapturegui-c.so.2.13.3.31  libflycapturevideo-c.so.2.13.3.31
libflycapture-c_static.a      libflycapturegui-c_static.a      libflycapturevideo-c_static.a

我这样包含文件,并且此代码会导致多个错误。我知道由于名称空间的原因还不清楚,但是所有fc2类型的变量和函数都不会链接:


#include "flycapture/FlyCapture2.h"
#include <iomanip>
#include <iostream>
#include <sstream>

using namespace FlyCapture2;
using namespace std;

void PrintBuildInfo()
{
    FC2Version fc2Version;
    Utilities::GetLibraryVersion(&fc2Version);

    ostringstream version;
    version << "FlyCapture2 library version: " << fc2Version.major << "."
            << fc2Version.minor << "." << fc2Version.type << "."
            << fc2Version.build;
    cout << version.str() << endl;

    ostringstream timeStamp;
    timeStamp << "Application build date: " << __DATE__ << " " << __TIME__;
    cout << timeStamp.str() << endl << endl;
}

这只是我得到的错误的一小部分,但实际上它们只是一般的链接器错误,告诉我该库未正确链接:

GigEGrabEx.cpp:(.text+0x22bc): undefined reference to `FlyCapture2::Error::~Error()'
GigEGrabEx.cpp:(.text+0x22cc): undefined reference to `FlyCapture2::Error::~Error()'
GigEGrabEx.cpp:(.text+0x22dc): undefined reference to `FlyCapture2::Error::~Error()'

感谢您的帮助!

-seth

0 个答案:

没有答案