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



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

我从这里下载了一个用于超像素实现的包。

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

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

mex -IB:Opencvopencvbuildincludeopencv -c seeds2.cpp
mex mexSEEDS.cpp -IB:Opencvopencvbuildincludeopencv 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)

我没能通过这一关。当我在代码块中执行此操作时,即使按照许多网站/论坛的建议链接了库、编译器目录和链接器库和目录,我也会遇到同样的错误。

我得到了答案。
  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
    

原因是所有这些都是编译mexseeds.cpp所必需的。但基本的是至少前4个。添加后保存并编译mex文件。在pdf中,库名称将有所不同,因为它是在旧版本的opencv 中创建的

最新更新