C++:如何在 Windows 10 上使用编译器 MinGW 9.2.0 安装 OpenCV

Posted

技术标签:

【中文标题】C++:如何在 Windows 10 上使用编译器 MinGW 9.2.0 安装 OpenCV【英文标题】:C++: How to install OpenCV with the compiler MinGW 9.2.0 on Windows 10 【发布时间】:2020-06-23 20:18:07 【问题描述】:

我几天前尝试使用 Dev-Cpp 和 Windows 10 安装 opencv,我将 .h、.lib 和 .dll 文件的目录添加到 Dev-Cpp,但是当我编译代码时总是给出我也是同样的错误。

在编译器选项中我添加下一个目录:

-C++ 头文件--

C:\Users\admin\Downloads\opencv\build\include

-库-

C:\Users\admin\Downloads\opencv\build\x64\vc15\lib

-二进制文件-

C:\Users\admin\Downloads\opencv\build\x64\vc15\bin

-代码-

#include <iostream>
#include <opencv2/imgcodecs.hpp>

int main()
    cv::Mat img;
    img = cv::imread("Goten.jpg");
    return 0;

-错误-

c:\mingw\mingw32\bin\ld.exe C:\Users\admin\AppData\Local\Temp\cciHfDkS.o:main.cpp:(.text+0x62): undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
c:\mingw\mingw32\bin\ld.exe C:\Users\admin\AppData\Local\Temp\cciHfDkS.o:main.cpp:(.text$_ZN2cv3MatD1Ev[__ZN2cv3MatD1Ev]+0x2d): undefined reference to `cv::fastFree(void*)'
c:\mingw\mingw32\bin\ld.exe C:\Users\admin\AppData\Local\Temp\cciHfDkS.o:main.cpp:(.text$_ZN2cv3Mat7releaseEv[__ZN2cv3Mat7releaseEv]+0x40): undefined reference to `cv::Mat::deallocate()'
c:\mingw\mingw32\bin\ld.exe C:\Users\admin\AppData\Local\Temp\cciHfDkS.o:main.cpp:(.text$_ZN2cv3MataSEOS0_[__ZN2cv3MataSEOS0_]+0xb4): undefined reference to `cv::fastFree(void*)'
C:\Users\admin\Desktop\Programacion\collect2.exe    [Error] ld returned 1 exit status

我已经安装了 MinGW 9.2.0,我尝试使用标准 C++11、C++14 和 C++17 编译它

我能做些什么来解决这个错误? - 对不起我的英语

【问题讨论】:

Dev-C++ 已经超过 5 年没有更新了。帮自己一个忙,然后转到另一个 IDE。 【参考方案1】:

这些是链接器错误:这意味着编译器找不到这些函数的二进制代码。

换句话说,您可能忘记指定一些 OpenCV 库。如果我没记错的话,imread() 位于 opencv_imgcodecs 中。

【讨论】:

【参考方案2】:

Windows 上的 vcpkg 是否需要 VisualStudio,或者它是否也适用于 MinGW? (在 Google 上进行快速搜索似乎表明它可能有效。)自从我发现 vcpkg 以来,我必须承认我永远不会回到以旧方式安装和构建东西。

现在,要在 Windows 上获得几乎任何东西,我会 clone the vcpkg repo,运行引导脚本,然后运行 ​​vcpkg.exe install opencv

【讨论】:

这给了我一个错误,因为我使用的是 dev-cpp 而不是 Visual Studio【参考方案3】:

考虑使用良好的源代码编辑器(可能是GNU emacs)并在终端模拟器中在命令行上编译(例如,使用构建自动化工具,例如GNU make 或ninja)。

那么MinGW其实就是一些带有g++或者g++.exe的命令

然后你就可以下载OpenCV的源代码并在一些终端模拟器中编译。或者更好的是,获取source code from github。从源代码编译OpenCV可能会持续十几分钟或一个小时的计算机时间/

顺便说一句,如果您真的对 OpenCV 编程感兴趣,我建议您安装 Linux 发行版(例如 Debian)。大多数 GNU/Linux 系统都有一个真正的和最新的GCC,而不仅仅是一个名为 MinGW 的 GCC 仿真。

【讨论】:

以上是关于C++:如何在 Windows 10 上使用编译器 MinGW 9.2.0 安装 OpenCV的主要内容,如果未能解决你的问题,请参考以下文章

如何在Windows 10上使用VS2019 编译C

如何在 Windows 上使用 Vim 编译 C++ 代码?

如何使用 LLVM 在 Windows 上为 ARM 编译 C++ 程序?

无法将 Python 3.5 配置为在 Windows 上使用 Visual C++ 编译器

在Windows 10的命令行上编译一个本地C++程序

如何在 Windows 10 上使用 C++ 将连续的原始音频数据记录到循环缓冲区中?