【问题标题】:Mex cannot find a file, but "which" canMex 找不到文件,但“which”可以
【发布时间】:2013-06-11 00:33:25
【问题描述】:

我正在尝试编译一个 C++ 函数(找到 here)。我下载了必要的包,安装了 Microsoft Windows SDK 7.1,使用mex -setup 将其链接到 MATLAB,然后将函数包解压缩到我的 MATLAB 路径中。

当我运行命令时:

mex -output Faddeeva_w -O Faddeeva_w_mex.cc Faddeeva.cc

我收到错误消息:

C:\PROGRA~1\MATLAB\R2013A\BIN\MEX.PL: Error: 'Faddeeva_w_mex.cc' not found. 

但如果我输入 which Faddeeva_w_mex.cc 我会得到:

C:\Users\craigim\Documents\Code\Matlab\Faddeeva-MATLAB\Faddeeva_w_mex.cc

所以 MATLAB 和 which 命令在查找文件时没有问题,但 mex 丢失了。这是我第一次尝试用mex 编译一些东西,所以我真的不知道从哪里开始。 mex 是否有我必须设置的不同路径变量?

我在 Windows 7 64 位机器上使用 MATLAB 2013a,其 SDK 7.1 版本从 MATLAB List of supported compilers 链接。

【问题讨论】:

  • which 是个女巫...有时是个 b$%#ch...
  • 尝试将-v 标志添加到您对mex 的调用中,看看详细信息是否可以为您提供更多信息。
  • 在这种情况下非常简单:只需下载 zip 文件,将其解压缩,cd 到该目录并运行 Faddeeva_build。我自己也试过了。

标签: matlab mex


【解决方案1】:

cd 进入包含文件的目录(假设它们都在同一个位置),或者在调用 mex 函数时指定 C++ 文件的完整/相对路径

【讨论】:

  • 我拥有所有其他部分,但 cding 进入目录是它工作的原因。
【解决方案2】:

尝试将addpath('C:\Users\craigim\Documents\Code\Matlab\Faddeeva-MATLAB\'); 放入您的 m 文件中。 MATLAB 使用的路径似乎是内部的,并且独立于您的操作系统使用的任何内容。

Documentation on addpath here.

And a similar discussion here.

您可能还必须将 PATH 环境变量设置为 MATLAB 中的命令 fullfile(matlabroot,'bin',computer('arch')) 返回的字符串。以下是为WindowsMac or Linux 设置环境变量的一些说明

还有一个pretty good overview of building mex-files here,尽管我觉得基础知识无法回答您的问题。

【讨论】:

  • 我的自定义 startup.m 文件中有该命令的变体。这就是which 找到该文件的原因。在运行mex之前,我还单独验证了该文件在MATLAB路径中,所以这不是问题。
  • 您可能还需要按照上面的编辑说明设置 PATH 环境变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多