我有一个使用OpenCV的C ++项目。它可以在Mac上编译并正确运行,但我想从Mac计算机上生成Windows可执行文件。我通过Homebrew安装了MinGW-W64。
以下是我的疑问。我如何告诉MinGW-W64使用OpenCV库进行交叉编译?不出所料,仅用g++
替换x86_64-w64-mingw32-g++
无效,输出与未声明的OpenCV函数相关的大量错误。
我已经读过,也有必要交叉编译OpenCV库,但是我不知道这到底意味着什么。是否需要从本地OpenCV安装中创建中间*.o
文件,并将它们与我自己的C ++代码的*.o
文件链接起来,以最终生成.exe
输出?而所有这些都使用x86_64-w64-mingw32-g++
?
如果可以,我对Make或CMake之类的工具没有太多专业知识,但是我想有一种方法可以使整个过程自动化(我的makefile非常简单,只需使用一个{{1 }}命令。
有人可以为此指出正确的方向吗?预先感谢!
答案 0 :(得分:1)
是的,您将需要使用mingw对OpenCV进行交叉编译,以便针对Windows对项目进行交叉编译。这意味着您将需要克隆源代码,并使用mingw编译器仔细阅读构建说明。使用mingw构建OpenCV之后,需要在交叉编译时指向您的项目以使用那些库。
OpenCV存储库使用并包含cmake文件来构建库。通常,cmake用于生成makefile,然后使用生成的makefile运行make
。由于要交叉编译,因此需要告诉cmake生成可与mingw32-make
而不是make
一起使用的makefile(因为ming32-make
将使用mingw g ++而不是普通的g ++)。要使cmake生成mingw makefile,您可以使用此-G "MinGW Makefiles" and then build with
mingw32-make`来调用它。您可能要考虑使用静态链接而不是动态链接,但是如果您希望/需要使用动态链接,则需要将opencv构建的输出复制到Windows上的某个位置,然后将该位置添加到PATH。
请记住,当与mingw交叉编译OpenCV时,启用CUDA支持标记可能不起作用。 (我最近没有检查过,但我想我记得是一个东西)