MinGW编译OpenCV示例程序运行无输出 疑似库链接问题求助
问题排查与解决步骤
1. 优先排查图片读取失败问题
你当前代码用了相对路径../resources/corrected_10_0.jpg,Windows下双击exe运行时的工作目录和cmd运行的工作目录可能不一致,极易触发assert(!image.empty())直接终止程序,导致无任何输出:
- 先将图片路径替换为绝对路径测试,例如
C:/test/corrected_10_0.jpg - 临时注释assert语句,增加日志确认图片读取状态:
std::cout << "image is empty: " << image.empty() << std::endl;
2. 修正编译指令的链接路径错误
你当前编译指令中-L参数指向了OpenCV的bin目录,这是错误配置:
-L参数是编译时指定静态库(.a)所在的lib文件夹,bin文件夹是存放运行时dll的,仅运行时生效- 找到你的OpenCV目录下的lib文件夹,将编译指令修改为:
g++ -Wall main.cpp -o main -IC:\Libs\OpenCV-MinGW-Build\include \ -LC:\Libs\OpenCV-MinGW-Build\x64\mingw\lib -llibopencv_core452 \ -llibopencv_highgui452 -llibopencv_imgcodecs452
3. 运行时dll加载排查
避免环境变量未生效导致dll加载失败:
- 打开cmd,cd到exe所在目录,执行
main.exe运行,可查看是否有缺失dll的报错(双击运行报错窗口会一闪而过无法查看) - 临时将
C:\Libs\OpenCV-MinGW-Build\x64\mingw\bin下你用到的libopencv_core452.dll、libopencv_highgui452.dll、libopencv_imgcodecs452.dll复制到exe同目录测试
4. 第三方依赖问题
你使用的预编译OpenCV包已经将zlib、libjpeg这类基础依赖静态编译进库,不需要你额外下载单独链接,无需单独安装这些依赖。
5. 自行编译OpenCV时imshow失效问题
如果是源码编译的版本,检查cmake配置时是否勾选了WITH_WIN32UI选项,未勾选的话highgui模块没有Windows窗口渲染后端,imshow功能会失效,重新运行cmake勾选该选项后重新编译即可。
内容的提问来源于stack exchange,提问作者Hersh Joshi
相关产品推荐
相关产品推荐

