我有一个 C++ 文件:
- 启动 matlab 引擎
- 调用
matlab_optimize()
(在内部运行 matlab 优化器之一的编译 m 文件) - 打印结果
- 停止引擎并退出
这工作正常。我现在想将第二行更改为
- 来电
matlab_optimize(obj_fun)
obj_fun()
我的 C++ 代码中定义的函数在哪里,它本身会回调到其他代码中。本质上,我希望内部matlab_optimize
使用的 matlab 优化器将我提供的函数指针用作目标函数。
我不能只编译obj_fun()
为独立的 mex 文件,因为我希望它与启动 matlab 引擎(驱动整个事情)的 c++ 进程通信。
2009 年的新闻组帖子似乎表明这是不可能的。然后,Matlab C++ 数学库工具箱似乎确实能够做到这一点。
谷歌搜索也揭示了这个生成的片段:
/*
* Register a function pointer as a MATLAB-callable function.
*/
extern void mexRegisterFunction(void);
这似乎正是我想要的,但该文件来自 2000 年,而且我在任何地方的 matlab 文档中都找不到对这个函数的引用。那么如何使用这个呢?