【问题标题】:opencv linking error after mixing c++ with c version将c ++与c版本混合后的opencv链接错误
【发布时间】:2013-01-14 06:30:06
【问题描述】:

我正在使用 Eclipse CDT(Indigo Service Release 2)在 Windows 7 64 位机器上使用 opencv 2.4.0。我按照 opencv 下载站点上描述的步骤从源代码(使用 cmake/visual studio express 10)编译了 opencv。

当我使用 opencv C 函数(在我的 C++ 代码中)时,一切正常。当我尝试使用 cv::Mat 时,它给了我一个链接错误(例如:未定义的对 `cv::Mat::Mat(_IplImage const*, bool)' 的引用)。

  • 我需要链接哪些库才能使 opencv C++ 函数与纯 C 函数一起工作?我已经与 opencv_core240 和其他我需要的链接,它适用于 opencv C 函数。

  • 我注意到 ocv 库有 2 个版本,一个带有后缀“d”,即 opencv_core240 和 opencv_core240d。两者有什么区别?

【问题讨论】:

  • 后缀 'd' - 调试版本,无后缀 - 发布。

标签: opencv eclipse-cdt windows-7-x64


【解决方案1】:
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace cv;
using namespace std;

int main()
{
    IplImage *image = cvLoadImage("C:\\any_picture.jpg");
    Mat m = Mat(image);
    imshow("test",m);
    waitKey();
    return 0;
}
  1. 通过链接调试文件(如 opencv_core240d.lib、opencv_highgui240d.lib、opencv_imgproc240d.lib)尝试上述代码
  2. 将bin文件夹的路径添加到环境变量中
  3. 尝试获取最新的 opencv 即 2.4.3

【讨论】:

  • 还是同样的问题!代码可以编译,但会将错误链接到除 cvLoadImage() 之外的所有函数。我会得到 opencv 2.4.3 并尝试一下。
  • 2.4.3 也出现同样的错误!另一方面,在 Visual Studio Express 10 中编译时它工作得很好(而不是使用 Eclipse/MinGW GCC 工具链)。接下来尝试使用 eclipse 编译 opencv 本身,但编译以 opencv lib/ 目录中的一堆 .a 文件结束(因此没有生成 .lib 文件)。在 CMake 中,我使用“Eclipse CDT4 - MinGW Makefiles”选项作为生成器。有什么想法可能是错的吗?
  • 确保您选择的编译器使用 CMAKE 构建 opencv 的库 n 箱(尝试使用 CMAKE 的 GUI 版本..)最好使用相同的编译器来运行程序...我我主要关注 Qt 和 VS,所以请原谅我无法为您提供更多关于 eclipse 的指导……但是您遵循的步骤是通用的,应该可以工作..
【解决方案2】:

找到了解决方案。当使用带有 mingw 工具链的 eclipse 时,您也应该使用 mingw 编译 opencv。从命令行编译 opencv 对我有用。

  1. 按照 opencv InstallGuide 中的“从命令行使用 GCC 编译”部分进行操作
  2. 除了 mingw32-make、make -j 之外,还要执行“make install”。这将在您构建 opencv 二进制文件的文件夹中创建一个安装目录。 opencv 库将被放置在 install/lib
  3. install/lib 中的 lib 文件将具有“.dll.a”扩展名,如“libopencv_core243.dll.a”。 要链接到项目中的这些 lib 文件,请转到 Properties->C/C++ General->Paths and Symbols->Libraries。然后添加不带前缀“lib”和后缀“.dll.a”的库名称。所以要链接到“libopencv_core243.dll.a”只需使用“opencv_core243”

【讨论】:

    猜你喜欢
    • 2013-07-28
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 2011-10-18
    • 2012-10-23
    • 2015-11-30
    相关资源
    最近更新 更多