首页 文章

matlab mex文件和C dll(windows)

提问于
浏览
3

我有一个带类Test的DLL . Headers :

class MY_EXPORT Test
{
public:
    int doit(const string &str);
};

和来源:

int 
Test::doit(const string &str)
{
    return int(str.length());
}

现在我从mex文件中使用它:

void 
mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
    string str("hello!");
    Test *t = new Test();
    t ->doit(str);
}

问题是,变量 str 未正确传递给方法 doit . 在方法里面它包含拉比 . 我发现通过引用传递的任何对象都会发生这种情况 . 我做错了什么?请帮忙 .

PS:如果我将声明更改为'int doit(const char *)'一切正常 .

1 回答

  • 5

    问题是这样的:
    libmex.dll(和整个Matlab 2010a / 2010b)使用Microsoft.VC80.CRT(版本= 8.0.50727.4053)
    但您的Visual Studio使用Microsoft.VC90.CRT(版本= 9.0.21022.8)

    如果您编写C mex文件,则需要在matlab使用的mex dll中使用相同版本的CRT库 . 您可以免费安装Visual C 2005(SP1)Express Edition,并使用它编译mex文件 .

相关问题