Mex 文件执行中的错误,Matlab 窗口
Posted
技术标签:
【中文标题】Mex 文件执行中的错误,Matlab 窗口【英文标题】:Error in Mex file Execution, Matlab windows 【发布时间】:2015-01-02 12:09:24 【问题描述】:我一直在尝试在 matlab 中编译一些 mex 文件。该文件编译良好,但在我运行它时抛出以下错误。
无效的 MEX 文件“filename.mexw32”:指定的过程无法 找到了。
我已将原因缩小到代码中使用的函数push_back()
。代码sn-p如下。
typedef vector<node> node_list;
node_list q;...
node n;
n.id = 0;
n.parent = -1;
n.is_leaf = 0; // <- set to 1 if node symbol is a terminal
n.rhs_index = 0;
n.symbol = ctx.start_symbol;
n.rule_index = 0; // <- set after computing argmax rule
n.rhs_index = 0;
n.x = start_x;
n.y = start_y;
n.l = start_l;
n.ds = 0;
n.dx = 0; // <- set if def rule
n.dy = 0; // <- set if def rule
n.score = start_score;
n.loss = 0; // <-- set if start symbol
q.push_back(n);
最后一行 q.push_back(n);
导致错误。
我已经包含了头文件
mex.h、向量、iostream 和列表
我该如何解决这个问题?我应该在代码中定义方法 push_back 吗?如果是,我该怎么做?我是 C++ 的初学者。任何帮助将不胜感激。
【问题讨论】:
所以您是说代码可以编译,但是当您尝试从 MATLAB 调用它时,MATLAB 无法加载编译后的二进制文件? 是的。我收到上述错误。 听起来好像缺少依赖项,或者您正在为与您正在运行的版本不同的 MATLAB 版本进行编译。见***.com/questions/15338427/… 我没有使用任何额外的库或文件。只有一个 cpp 文件。我使用的是 32 位操作系统,windows 7 和 matlab r2012。我使用相同的 matlab 版本进行编译和执行。 您没有安装正确的 VS 运行时,或实现node
的库。
【参考方案1】:
每个 mex 文件都需要一个入口点,这是一个名为“mexFunction”的函数。
名称“mexFunction”及其签名是固定的,所有 mex 函数都相同,但 matlab 将使用文件名来识别它们。
AFAIK,您无法以脚本样式运行 mex。
通常的做法是将代码编写为 C 函数,然后在“mexFunction”中调用该 C 函数。
【讨论】:
以上是关于Mex 文件执行中的错误,Matlab 窗口的主要内容,如果未能解决你的问题,请参考以下文章
如何诊断为啥在 MATLAB 中执行 .mex 文件时无法加载 .so 文件?
mex 文件未在 MATLAB 7.5.0 (R2007b) 中执行
为啥到达 MEX 文件的最后一行后返回 Matlab 需要这么长时间?