本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

无效的 MEX 文件错误

如果 MATLAB® 找不到 MEX 文件引用的所有 .dll 文件,则无法加载该 MEX 文件。例如,假设 MEX 文件 A 依赖于不在系统路径上的库 subA.dll。如果您在文件夹 L:\mylibs\ 中调用 A.mexw64,则 MATLAB 将显示:

Invalid MEX-file 'L:\mylibs\A.mexw64':
Missing dependent shared libraries
'subA.dll' required by 'L:\mylibs\A.mexw64'

如果缺少某个共享库所需的符号,MATLAB 将显示与下面类似的消息:

Invalid MEX-file 'L:\mylibs\A.mexw64':
Missing symbol 'q' in 'L:\mylibs\subA.dll' required by L:\mylibs\A.mexw64'

要查找库依赖项,请执行以下操作:

  • 在 Windows® 系统上,从网站 http://www.dependencywalker.com 下载 Dependency Walker 实用工具。

  • 在 Linux® 系统上,使用:

    ldd -d libname.so
  • macOS 系统上,使用:

    otool -L libname.dylib

对于 MEX 文件在编译时所链接的 .dll 文件,这些 .dll 文件必须位于系统路径上或位于与 MEX 文件相同的文件夹中。

MEX 文件可能需要其他未链接到 MEX 文件的库。未能找到其中一个显式加载的库可能不会导致 MEX 文件无法加载,但会导致其无法正常工作。加载库的代码控制用于查找这些库的搜索路径。搜索路径可能不包括包含 MEX 文件的文件夹。有关正确的安装位置,请查阅库文档。

可能的故障原因包括:

  • MATLAB 版本不兼容。有关详细信息,请参阅MEX 版本兼容性

  • 缺少编译器运行时库。如果您的系统没有包含用于编译 MEX 文件的相同编译器,请参阅 Microsoft® MSDN® 网站,了解关于 Visual C++® 可再发行软件包的信息。

  • 缺少或不正确地安装了专用运行时库。请联系您的 MEX 文件或库供应商。

相关主题

外部网站