У меня есть файл C ++, который:
- запускает механизм Matlab
- вызывает
matlab_optimize()
(скомпилированный m-файл, который запускает один из оптимизаторов Matlab внутри) - печатает результат
- останавливает двигатель и завершает работу
Это отлично работает.Теперь я хочу изменить вторую строку на
- вызывает
matlab_optimize(obj_fun)
Где obj_fun()
- это функция, определенная в моем коде C ++, которая сама будет вызывать обратный вызов в другой код,По сути, я хочу, чтобы оптимизатор matlab, используемый внутри matlab_optimize
, использовал указатель поставляемой функции в качестве целевой функции.
Я не могу просто скомпилировать obj_fun()
как отдельный mex-файл, так как я хочу, чтобы он связывался с c ++процесс, который запускает механизм Matlab (который управляет всем этим).
Сообщение в группе новостей от 2009 , похоже, указывает на то, что это невозможно.С другой стороны, Matlab C ++ Math Library Toolbox , похоже, действительно может сделать это .
Поиск в Google также показывает этот сгенерированный фрагмент :
/*
* Register a function pointer as a MATLAB-callable function.
*/
extern void mexRegisterFunction(void);
Который кажется именно тем, что я хочу, но это файл 2000 года, и я нигде не нахожу ссылки на эту функцию в документах matlab.Так как это использовать?