You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用自定义编译OpenCV库编译代码时遇未定义引用错误求助

解决OpenCV自定义编译库的g++链接错误问题

嗨,我来帮你排查这个问题——你遇到的undefined reference错误,核心原因是编译器ABI不兼容,具体来说:

问题根源

你当前使用的OpenCV库是用VC14(Visual Studio 2015)编译生成的,但你现在用g++(GCC/MinGW系列编译器)来编译自己的代码。VC和GCC的C++二进制接口(ABI)不兼容,导致链接阶段无法找到正确的函数实现,就出现了cv::VideoCapture相关的未定义引用错误。

解决方案

你有两个可行的方向来解决这个问题:

1. 用GCC/MinGW重新编译OpenCV库

这是最推荐的方案,确保库和你的编译环境匹配:

  • 准备好OpenCV源码(如果之前是用预编译包,建议下载完整源码)
  • 用CMake配置编译选项:
    • 指定编译器为你的g++/gcc路径
    • 设置安装路径、架构(x64)、需要启用的模块等
    • 确保生成的是MinGW/GCC兼容的Makefile
  • 执行mingw32-make(或make)完成编译,再执行mingw32-make install安装库文件
  • 之后编译你的代码时,链接新生成的GCC版库即可

2. 改用Visual Studio编译器编译你的代码

如果你不想重新编译OpenCV,可以放弃g++,改用Visual Studio的cl.exe编译器来编译你的代码,这样就能和VC14编译的OpenCV库兼容。

额外注意事项

  • 不管用哪种方案,编译时不要同时混合链接Debug(带d后缀)和Release(无后缀)版本的库,选其中一套即可(比如Debug模式只链带d的库)
  • 编译完成后,要把OpenCV的bin目录添加到系统PATH环境变量中,否则运行程序时会找不到动态链接库

内容的提问来源于stack exchange,提问作者kmes40505

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:42:43