matlab使用dll mex,matlab mex文件和C dll(windows)

我有一个带类Test的DLL.

标题:

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 *)’一切正常.

解决方法:

问题是这样的:

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文件.

标签:linkage,mex,c,matlab,dll

来源: https://codeday.me/bug/20190903/1798245.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值