将c ++与c版本混合后,opencv链接错误

时间:2013-01-13 00:30:05

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

我在Windows 7 64位计算机上使用eclipse CDT(Indigo Service Release 2)处理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函数运行良好。

  • 我注意到2个版本的ocv库,一个带有后缀'd',所以opencv_core240和opencv_core240d。 2?

  • 有什么区别?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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