错误LNK2019:matlab中未解析的外部符号

时间:2014-04-29 04:57:41

标签: c++ matlab opencv mex mixed-programming

我已经在这2天了,并尝试了通过搜索引擎找到的所有可能的解决方案。但我仍然被困在这里。

我从here下载了一个用于超像素实现的软件包。

该函数是用C ++编写的,但是为Linux 64位操作系统生成了一个mex文件。我使用Windows 8 64位,所以我必须为我的系统生成一个mex文件。

文件已在网站的包中提供。在mex设置并提供适当的openCV路径和环境变量之后,我运行了代码compile_mex.m

mex -IB:\Opencv\opencv\build\include\opencv -c seeds2.cpp

mex mexSEEDS.cpp -IB:\Opencv\opencv\build\include\opencv seeds2.obj

我收到以下错误,因此无法找到解决方案

  

mexSEEDS.obj : error LNK2019: unresolved external symbol cvSaveImage referenced in function "void __cdecl SaveImage(unsigned int *,int const &,int const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?SaveImage@@YAXPEAIAEBH1AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)

我无法通过这个。我在codeblocks中执行此操作时遇到了同样的错误,即使在链接了libraires,编译器目录以及许多站点/论坛建议的链接器库和目录之后也是如此。

1 个答案:

答案 0 :(得分:0)

我得到了答案。

  1. 找到并打开mexopts.bat
  2. 访问此pdf
  3. 关注设置MATLAB以编译C ++和MATLAB MEX文件并将其与OPENCV OBJ文件链接
  4. 在编辑 mexopts.bat 时,在将库添加到 LINKFLAGS 时,从/ build / x64 / vc10 / lib

    添加以下库
    core249 and 249d
    flann249 (and the same as above. rest also have the tag 249 and 249d. this is the version number. 2.4.9 in my case)
    highgui
    imageproc
    legacy
    objdetect
    
  5. 原因是所有这些都是编译mexseeds.cpp所必需的。但基本是至少第一个4.添加保存并编译mex文件后。在pdf中,库名称将不同,因为它是在旧版本的opencv

    期间创建的