【发布时间】:2012-01-30 18:09:14
【问题描述】:
我有一个 C++ 文件:
- 启动 matlab 引擎
- 调用
matlab_optimize()(在内部运行一个matlab优化器的编译m文件) - 打印结果
- 停止引擎并退出
这很好用。我现在想把第二行改成
- 致电
matlab_optimize(obj_fun)
obj_fun() 是在我的 C++ 代码中定义的函数,它本身会回调到其他代码中。本质上,我希望 matlab_optimize 内部使用的 matlab 优化器使用我提供的函数指针作为目标函数。
我不能将 obj_fun() 编译为独立的 mex 文件,因为我希望它与启动 matlab 引擎(驱动整个引擎)的 c++ 进程通信。
A newsgroup post from 2009 似乎表明这是不可能的。然后是 Matlab C++ 数学库工具箱does seem to be able to do this。
也搜索一下reveals this generated snippet:
/*
* Register a function pointer as a MATLAB-callable function.
*/
extern void mexRegisterFunction(void);
这似乎正是我想要的,但该文件来自 2000 年,我在任何地方的 matlab 文档中都没有找到对这个函数的引用。那么这个怎么用呢?
【问题讨论】:
-
只是一个建议,你认为你可以接受他们通过套接字通信吗?
-
我可以让事情通过套接字工作,但此时它并不值得付出努力,所以我会放弃这条路线。
标签: c++ matlab mex matlab-deployment matlab-engine