【问题标题】:How do I link a 64-bit MATLAB mex file to OpenCV libraries如何将 64 位 MATLAB mex 文件链接到 OpenCV 库
【发布时间】:2011-04-11 14:36:14
【问题描述】:

通常在 MATLAB 中,我可以编译一个使用 OpenCV 函数的 mex 文件:

mex -O "mxFunc.cpp" -I"C:\OpenCV2.1\include/opencv" -L"C:\OpenCV2.1\lib" -lcv210 -lcvaux210 -lcxcore210 -lhighgui210

但是,在切换到 64 位版本的 MATLAB 后,我现在得到了无法解析的符号,例如

mxFunc.obj : error LNK2019: unresolved external symbol cvReleaseImage referenced in function mexFunction

我该如何解决这个问题?

系统:Windows 7 64 位; MSVC 2005; MATLAB R2010b 64 位; OpenCV 2.1.0。

【问题讨论】:

    标签: matlab opencv 64-bit


    【解决方案1】:

    一般情况下:使用的库需要重新编译为 64 位。

    据我所知,这还不够。如果您使用 STL(OpenCV 使用很多),您需要使用与 Matlab 相同的 CRT 版本。因此,您需要使用与 Mathworks 人员相同的 MSVC 版本...

    您可以检查 libmex.dll 的依赖关系以确定需要哪个 CRT。之后,您需要安装正确的 Visual C++(通常免费版本就足够了)。

    【讨论】:

    • 使用 64 位库有效。我必须使用 CMAKE 配置一个新的 64 位 MSVC 解决方案,将“生成器”命名为“Visual Studio 8 2005 Win64”。不知道我用的编译器和生成libmex.dll的那个编译器是不是一样的,不过还是可以的。
    • @user664303:2010a/20010b 的 32 位版本使用 VS 2005。我想他们对 64 位使用相同的版本。你很幸运。 :)
    猜你喜欢
    • 2011-07-22
    • 1970-01-01
    • 2014-01-02
    • 2011-01-12
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    相关资源
    最近更新 更多