在不使用mex的情况下,将C++回调作为函数句柄传递给matlab引擎
Passing C++ callbacks to matlab engine as function handles without using mex
我的项目是用C++编写的。我想通过"eval"的matlab引擎来使用matlab优化nonlinsq
。我想以的格式传递我用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()未知"
问题出在哪里?。。
要求MATLAB运行时引擎解释C/C++代码是错误的做法(我确信目前不可能)。您所指的文章假设C/C++代码被编译成共享对象或动态链接库。mex
函数本身需要一个支持的编译器,可以调用该编译器来创建.mex
文件。
TLDR:MATLAB无法解释C/C++代码。
相关文章:
- 外壳包装器句柄/执行交互式命令管道C++ UNIX
- 如何获取边缘窗口句柄 (HWND)?
- 枚举进程模块在有效句柄上返回无效句柄
- 在 c/c++ 中打开 PhysicalDrive 的句柄并写入 MBR 的 linux 等效是什么?
- Windows 函数"GetCursorInfo"返回成功,但光标的句柄为 NULL
- 函数返回的临时unique_ptr句柄
- 创建文件函数是否可以打开仅在WinObj实用程序中的全局目录下列出的设备的句柄?
- 线程1:EXC_BAD_ACCESS错误,此错误在第一行的CPP文件中的句柄函数中出现
- 模板化类的模板化成员的函数句柄
- C++/CLI中重复的析构函数调用和跟踪句柄
- libcurl, 如何为每个句柄附加不同的回调函数
- 如何将句柄用作函数参数
- 资源句柄-禁止默认构造函数
- 通过 C++ 中的函数创建类的新句柄
- 在作为函数参数的句柄上调用 CloseHandle
- 传递给函数调用后的空指针sqlite3句柄
- 在不使用mex的情况下,将C++回调作为函数句柄传递给matlab引擎
- 不存储函数返回句柄时的内存管理
- OpenProcess函数返回无效句柄
- 在析构函数中调用CloseHandle会导致运行时内存错误,即如何正确关闭结构/类中的文件句柄