Mex文件执行错误,Matlab窗口

时间:2015-01-02 12:09:24

标签: c++ c matlab mex

我一直在尝试在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 ++的初学者。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

每个mex文件都需要一个入口点,这是一个名为&#34; mexFunction&#34;的函数。

名称&#34; mexFunction&#34;并且它的签名是固定的,对于所有mex函数都是一样的,但是matlab将使用文件名来识别它们。

AFAIK,你无法以脚本风格运行mex。

通常的做法是将代码编写为C函数,然后在&#34; mexFunction&#34;中调用该函数。