【问题标题】:Matlab mex "Missing dependent shared libraries"Matlab mex“缺少依赖共享库”
【发布时间】:2017-06-01 19:47:45
【问题描述】:

我在 Matlab 2017a 中创建了几个 mex 文件。当我使用 Visual Studio C++ 2017 编译它们时,它们在我的计算机上运行良好。但是,当我尝试在另一台计算机上使用它们时,我收到一个错误提示

Error using mfss_mex.filter_uni
Invalid MEX-file  
'path_to_mex_file\mexfile.mexw64':
Missing dependent shared libraries:
'MSVCP140.dll' required by
'path_to_mex_file\mexfile.mexw64'
'VCRUNTIME140.dll' required by
'path_to_mex_file\mexfile.mexw64'

我想我可以通过在每台将运行它的计算机上安装 Visual Studio 运行时来解决这个问题,但我想避免这种情况。有没有办法使用 Visual Studio C++ 编译器编译这些 mex 文件并避免这些依赖关系?

【问题讨论】:

  • 我已经能够在使用另一个版本的 Matlab 和 Visual Studio 之前编译这些文件,而无需创建这些依赖项。

标签: matlab visual-studio-2017 mex


【解决方案1】:

Mathworks solution 用于在有此问题的任何计算机上安装 C++ 编译器运行时。

我发现我只需将有问题的.dll 文件(MSVCP140.dllVCRUNTIME140.dll)复制到与我的.mexw64 文件相同的文件夹中,并且一切运行都没有问题。

【讨论】:

  • 我们不能将 .dll 和 .mex64 文件放在不同的目录并使用 addpath 命令添加这些目录的路径吗?
  • 我刚遇到一种情况,向我确认是的,.dll 文件需要与 .mexw 文件位于同一目录中。
  • 我也遇到了同样的情况。如果 matlab 程序引用 mexw 文件中的函数,而该文件又在 .dll 中定义,那么所有这些(matlab 程序、mexw 和 .dll)都必须位于同一目录中。将它们放在不同的目录中并通过addpath 命令添加路径不起作用!
【解决方案2】:

我遇到了同样的问题。我通过re-mex MATLAB 中的原始.c 文件解决了它; 如果你有原始的 .c 文件,简单的方法是:

mex -setup
mex NAME.c

(这里的 NAME 代表您的无效 .mexw64 文件的名称) 在这种情况下,例如:

mex mexfile.c

【讨论】:

    猜你喜欢
    • 2019-06-24
    • 1970-01-01
    • 2011-10-01
    • 2011-01-12
    • 2015-05-23
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多