我一直在尝试在matlab中编译一些mex文件。该文件编译得很好,但在我运行时它抛出了以下错误。
无效的MEX文件' filename.mexw32':指定的程序不能 被发现。
我已将原因缩小为代码中使用的函数push_back()
。代码段如下。
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,vector,iostream和list
我该如何解决这个问题?我应该在代码中定义方法push_back吗?如果是,我应该怎么做?我是c ++的初学者。任何帮助将不胜感激。
答案 0 :(得分:0)
每个mex文件都需要一个入口点,这是一个名为&#34; mexFunction&#34;的函数。
名称&#34; mexFunction&#34;并且它的签名是固定的,对于所有mex函数都是一样的,但是matlab将使用文件名来识别它们。
AFAIK,你无法以脚本风格运行mex。
通常的做法是将代码编写为C函数,然后在&#34; mexFunction&#34;中调用该函数。