【发布时间】: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 版本进行编译。见stackoverflow.com/questions/15338427/…
-
我没有使用任何额外的库或文件。只有一个 cpp 文件。我使用的是 32 位操作系统,windows 7 和 matlab r2012。我使用相同的 matlab 版本进行编译和执行。
-
您没有安装正确的 VS 运行时,或实现
node的库。