gpt4 book ai didi

c++ - matlab mex 文件和 C++ dll (windows)

转载 作者:太空狗 更新时间:2023-10-29 20:47:30 25 4
gpt4 key购买 nike

我有一个类为 Test 的 DLL。 header :

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。在它包含 rabish 的方法中。我发现任何通过引用传递的对象都会发生这种情况。我做错了什么?请帮忙。

PS:如果我将声明更改为“int doit(const char *)”,一切正常。

最佳答案

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

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

关于c++ - matlab mex 文件和 C++ dll (windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5460417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com