配置OpenCV与Qt时mingw32-make -j 8执行失败求助
错误原因与解决方案
错误核心
你遇到的是编译架构不匹配问题:生成的资源文件vs_version.rc.obj是32位(i386)架构,但你的编译目标是64位(i386:x86-64),导致链接器报错。
解决步骤
彻底清理构建环境
- 删除当前的OpenCV构建目录(比如
build文件夹),新建一个干净的空目录 - 打开CMake-GUI,点击「Delete Cache」清除所有旧配置,再重新指定源码路径和新的构建目录
- 删除当前的OpenCV构建目录(比如
强制指定64位编译工具链
- 在CMake-GUI点击「Configure」时,选择「Specify native compilers」,然后手动指定:
- C编译器:
D:/qt/Tools/mingw1120_64/bin/gcc.exe - C++编译器:
D:/qt/Tools/mingw1120_64/bin/g++.exe
- C编译器:
- 配置完成后,检查以下变量是否正确:
CMAKE_SYSTEM_PROCESSOR=x86_64CMAKE_CXX_COMPILER_TARGET=x86_64-w64-mingw32
- 找到并取消勾选
ENABLE_WIN32_RESOURCES(部分OpenCV版本可能命名为BUILD_WITH_STATIC_CRT相关选项),避免生成32位资源文件
- 在CMake-GUI点击「Configure」时,选择「Specify native compilers」,然后手动指定:
指定MinGW的64位资源编译器
在CMake的变量列表里,添加或修改CMAKE_RC_COMPILER,设置为D:/qt/Tools/mingw1120_64/bin/windres.exe,确保资源编译用的是64位工具重新执行编译命令
点击CMake-GUI的「Generate」生成Makefile,进入构建目录后重新运行:mingw32-make -j 8 mingw32-make install
内容的提问来源于stack exchange,提问作者dmb
相关产品推荐
相关产品推荐

