我知道已经多次询问过这个问题,但我仍然在努力解决简单的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)'
我错过了什么吗?任何帮助将不胜感激。
答案 0 :(得分:0)
万一有人因其他原因迷失了它,我遇到了一个问题,即x86 Ubuntu 18.04 docker容器上的OpenCV链接选项与Ubuntu 16.04 Raspberry Pi上的选项不同,我通过替换链接器标志{ {1}}和链接器标志-lopencv_imgcodecs