【问题标题】:Errors while trying to compile OpenCV project on Dev C++尝试在 Dev C++ 上编译 OpenCV 项目时出错
【发布时间】:2014-09-12 21:29:20
【问题描述】:

我收到此错误:

D:\Users\JF150696\AppData\Local\Temp\ccrDYwyp.o Source2.cpp:(.text+0xdf): undefined reference to `cv::imread(std::string const&, int)'
D:\Users\JF150696\AppData\Local\Temp\ccrDYwyp.o Source2.cpp:(.text+0xdec): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
D:\Users\JF150696\AppData\Local\Temp\ccrDYwyp.o Source2.cpp:(.text+0xe41): undefined reference to `cv::imwrite(std::string const&, cv::_InputArray const&, std::vector<int, std::allocator<int> > const&)'
d:\devc\dev-cpp\mingw64\x86_64-w64-mingw32\bin\ld.exe  D:\Users\JF150696\AppData\Local\Temp\ccrDYwyp.o: bad reloc address 0x20 in section `.text$_ZSt4sqrtf[__ZSt4sqrtf]'
D:\devc\opencv\projekty\test 3 opencv\test 3 opencv\collect2.exe    [Error] ld returned 1 exit status

我在开发选项中做了什么:

  1. 我已将此命令行添加到编译器:

    -L “C:\的OpenCV \构建\ 86 \ VC11 \ lib中” -lopencv_highgui248 -lopencv_core248 -lopencv_imgproc248 -lopencv_calib3d248 -lopencv_video248 -lopencv_features2d248 -lopencv_ml248 -lopencv_highgui248 -lopencv_objdetect248 -lopencv_contrib248 -lopencv_legacy248 -lopencv_flann248 P>

  2. 链接器选项的这条通道:

    -static-libgcc -lopencv_highgui248 -lopencv_core248 -lopencv_imgproc248 -lopencv_calib3d248 -lopencv_video248 -lopencv_features2d248 -lopencv_ml248 -lopencv_highgui248 -lopencv_objdetect248 -lopencv_contrib248 -lopencv_legacy248 -lopencv_

  3. 在我添加的目录中:

    二进制文件:D:\devc\opencv\build\x86\vc11\bin

    库:D:\devc\opencv\build\x86\vc11\lib

    标题C:D:\devc\opencv\build\include\opencv2D:\devc\opencv\build\include\opencvD:\devc\opencv\build\include

    头文件 C++:同上

  4. 我已将 opencv 路径 D:\devc\opencv 添加到 PATH 变量中

  5. 我的开发 C++ 版本是:5.7.0,OpenCV:2.4.8

有人知道怎么解决吗?

编辑

使用 CodeBlock 时同样的问题

【问题讨论】:

  • 我这里有类似的问题:stackoverflow.com/questions/25867017/…
  • 你好,你找到解决办法了吗,我知道已经晚了但是我也遇到了同样的问题,如果你记得解决办法可以分享一下吗?

标签: c++ opencv image-processing dev-c++


【解决方案1】:

使用here 中给出的 CMake 和 CodeBlocks 构建库,直到代码块设置的第 3 步。

然后将以下内容包含在 Devc++ C 和 C++ 包含选项卡的博客中

C:\OpenCV\my_build\install\include
C:\OpenCV\my_build\install\include\opencv
C:\OpenCV\my_build\install\include\opencv2

由于您已经包含了 opencv 和 opencv2,请删除头文件中的 /opencv2/..和 /opencv ..。

并将下面的行添加到 Devc++ 中的库中
C:\OpenCV\my_build\install\x64\mingw\lib

还将 C:\OpenCV\my_build\install\x64\mingw\lib 中的所有 .dll.a 文件添加到项目选项中。
从 opencv\my_build\install\x64\mingw\bin 复制所有 dll 文件并粘贴到您的程序的 EXE 将被构建的文件夹。

【讨论】:

    【解决方案2】:

    如果我没记错的话,问题与链接库无关,这是因为imread和imwrite不应该像你所说的那样

    imread(string, mat)

    但是你打电话给

    imread(string, int)

    所以它给出了错误。与其他行相同。

    【讨论】:

    • 你错了,但你想帮忙。根据 opencv 文档:imread。它是链接错误,因为它检查错误(例如,我会将第二个参数更改为 Mat)。更重要的是,我可以在 VS12 上运行该代码,但我还需要能够在 dev 上运行它
    • 那么,undefined reference to cv::imread(std::string const&amp;, int) 是什么?您能否发送出现此错误的行?
    • 我粘贴了所有日志。没有指向行,因为它是链接错误。但你走了,这可能是那一行:Mat img = imread("Manulane2.jpg",CV_LOAD_IMAGE_COLOR);
    【解决方案3】:

    您是否将 Source2 正确链接到 collect2?在与您的主程序链接之前,应将 Source2.cpp 编译为目标文件。

    【讨论】:

    • Source2.cpp 是一个主程序 - 这确实是个奇怪的名字 :D 没有其他 c 或 cpp 文件
    猜你喜欢
    • 1970-01-01
    • 2013-03-04
    • 2019-10-12
    • 2018-12-10
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    相关资源
    最近更新 更多