未定义的引用cv :: imread

时间:2015-07-07 13:23:54

标签: opencv linker-errors undefined-reference pkg-config imread

我知道已经多次询问过这个问题,但我仍然在努力解决简单的opencv代码的链接器错误未定义引用问题。这是我的代码:

#include <opencv2/highgui.hpp>
using namespace cv;

int main(int argc, char** argv) {
    Mat inputImage = imread(argv[1]);
    imshow("Input Image", inputImage);

    waitKey(0);
}

我正在使用eclipse IDE,cygwin g ++编译器和opencv 3.0。 我已经正确地给出了包含路径,库搜索路径为“C:\ opencv \ build \ x64 \ vc11 \ lib”&amp; “C:\ opencv \ build \ x64 \ vc11 \ staticlib”和库:opencv_highgui300,opencv_highgui300d,opencv_core300,opencv_core300d,opencv_imgcodecs300,opencv_imgcodecs300d 我认为从opencv文档中可以清楚地看到这些简单的代码。但仍然会提到imread,imshow,waitkey的链接器错误。 我尝试使用pkg-config但是pkg-config在我的64位机器上出现问题:加载共享库时出错并且无法解决。

下面是构建输出:
make all
建筑文件:../ ShowImage.cpp
调用:Cygwin C ++编译器
g ++ -I“C:\ opencv \ build \ include \ opencv”-I“C:\ opencv \ build \ include”-O0 -g3 -Wall -c -fmessage-length = 0 -MMD -MP -MF“ShowImage。 d“-MT”ShowImage.d“ - o”ShowImage.o“”../ ShowImage.cpp“ 完工建筑:../ ShowImage.cpp

构建目标:Test.exe
调用:Cygwin C ++链接器
g ++ -L“C:\ opencv \ build \ x64 \ vc11 \ lib”-L“C:\ opencv \ build \ x64 \ vc11 \ staticlib”-o“Test.exe”./ ShowImage.o -lopencv_highgui300 -lopencv_highgui300d - lopencv_core300 -lopencv_core300d -lopencv_imgcodecs300 -lopencv_imgcodecs300d

./ ShowImage.o:在函数main':* */cygdrive/d/Gateway_Firmware/ImProcessing_WS/Test/Debug/../ShowImage.cpp:12: undefined reference to cv :: imread(cv :: String const&amp;,int)'中 /cygdrive/d/Gateway_Firmware/ImProcessing_WS/Test/Debug/../ShowImage.cpp:12:(.text+0x44):重定位被截断以适合:R_X86_64_PC32对未定义的符号`cv :: imread(cv :: String const&amp; ,int)'

我错过了什么吗?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

万一有人因其他原因迷失了它,我遇到了一个问题,即x86 Ubuntu 18.04 docker容器上的OpenCV链接选项与Ubuntu 16.04 Raspberry Pi上的选项不同,我通过替换链接器标志{ {1}}和链接器标志-lopencv_imgcodecs