对cv::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:opencvbuildx64vc11lib"&"C:opencvbuildx64vc11staticlib"和库:opencv_highgui300,opencv_highgui300d,opencv_core300,opencv_core300d,opencv_imgcodecs300,opencv_imgcodecs300d我认为这些对于这个简单的代码来说已经足够了,从opencv文档中可以清楚地看到。但仍然得到链接错误的imread, imshow, waitkey,如前所述。我尝试使用pkg-config,但pkg-config在我的64位机器上给出问题:加载共享库时出错,也无法解决。

下面是构建输出:
让所有
构建文件:../ShowImage.cpp
调用Cygwin c++编译器
g++ -I"C:opencvbuildincludeopencv" -I"C:opencvbuildinclude" - 0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"d ShowImage"太"。d" -o "ShowImage。o . ./ShowImage.cpp"完成构建:../ShowImage.cpp

构建目标:Test.exe
调用Cygwin c++链接器
g++ -L"C:opencvbuildx64vc11lib" -L"C:opencvbuildx64vc11staticlib" -o "Test.exe" ./ShowImage. lib"O -lopencv_highgui300 -lopencv_highgui300 -lopencv_core300 -lopencv_imgcodecs300 -lopencv_imgcodecs300d

。/ShowImage。0:在函数main':* */cygdrive/d/Gateway_Firmware/ImProcessing_WS/Test/Debug/../ShowImage.cpp:12: undefined reference to cv::imread(cv::String const&, int)'/cygdrive/d/Gateway_Firmware/ImProcessing_WS/Test/Debug/./ShowImage.cpp:12:(.text+0x44): relocation truncated to fit: R_X86_64_PC32 against undefined symbol ' cv::imread(cv::String const&, int)'

我错过什么了吗?

以防有人因为其他原因偶然发现这个问题,我遇到了x86 Ubuntu 18.04 docker容器上的OpenCV链接选项与Ubuntu 16.04 Raspberry Pi上的选项不同的问题,我通过将链接标志-lopencv_imgcodecs替换为链接标志-lopencv_highgui.来解决这个问题

相关内容

  • 没有找到相关文章

最新更新