0

我的项目是用 C++ 编写的。我想nonlinsq通过“eval”通过matlab引擎使用matlab优化。我想以以下格式传递我用 C++ 编写的函数

    void func(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]) 

将 matlab 作为函数句柄而不将其编译为 mex。

我尝试按照将 C/C++ 回调传递到 matlab 引擎来创建 mxArray,然后将其传递到 matlab 工作区:

    mxArray *fh = mclCreateSimpleFunctionHandle(func);
    engPutVariable(engine, "func", fh);
    mxDestroyArray(fh);

但程序在第一行因访问冲突而崩溃。在调用堆栈中,违规前的最后一次调用是“mclmcrrt8_5.dll!000000000031dacd() Unknown”

问题是什么?..

4

1 回答 1

0

要求 MATLAB 运行时引擎解释C/C++ 代码是错误的方法(我确信此时是不可能的)。您所指的帖子假定 C/C++ 代码已编译为共享对象或动态链接库。该mex函数本身需要一个受支持的编译器,可以调用该编译器来创建.mex文件。

TLDR: MATLAB 无法解释 C/C++ 代码。

于 2016-01-05T11:57:55.933 回答