运行MinGW编译的OpenCV项目时出现“入口点无法定位”错误求助
MinGW编译OpenCV后运行DLL错误的解决方法
1. 修正编译命令中的库文件名错误
你的编译命令最后一个库参数是-lopencv_imgcodecs45,明显缺少一位版本号,应该改为-lopencv_imgcodecs455。错误的库名会导致程序链接到不存在的库文件,运行时触发DLL缺失错误。修正后的完整编译命令:
g++ sequential_convolution.cpp -o seq.exe -I C:/opencv/opencv/build/include -L C:/opencv/opencv/build/x64/mingw/lib -lopencv_core455 -lopencv_videoio455 -lopencv_imgcodecs455
2. 确认DLL文件存在且路径正确
检查C:\opencv\opencv\build\x64\mingw\bin目录下,是否存在以下DLL文件:
opencv_core455.dllopencv_videoio455.dllopencv_imgcodecs455.dll
如果缺少任意一个,说明你下载的非官方OpenCV MinGW包不完整,需要重新下载对应版本的构建包。
3. 解决GCC版本兼容性问题
你使用的GCC 12.2.0版本比OpenCV 4.5.5的发布时间晚,非官方MinGW构建可能是用更低版本GCC编译的,导致程序运行时依赖的GCC runtime DLL不匹配。解决方法:
- 从MinGW安装目录的
bin文件夹中,复制libgcc_s_seh-1.dll、libstdc++-6.dll、libwinpthread-1.dll这三个文件到seq.exe所在的目录。
4. 确保环境变量生效
Windows修改PATH后,需要重启命令提示符/IDE才能让新的PATH生效,如果你修改后没有重启环境,系统依然会使用旧的路径查找DLL。
5. 直接复制DLL到程序目录
这是最直接的临时解决方案:将C:\opencv\opencv\build\x64\mingw\bin下需要的DLL文件,直接复制到seq.exe所在的文件夹中,绕开环境变量的问题。
内容的提问来源于stack exchange,提问作者Giovanni Rebouças
相关产品推荐
相关产品推荐

