У меня есть mex-файл Matlab с известным интерфейсом, этот mex-файл предоставлен другими парнями, поэтому я не могу получить доступ к коду. Есть ли эффективный способ вызова функции mex в C ++? Спасибо!
мексекстовый вызов из Matlab говорит вам разрешено совместимо для вашей системы. (32 бит или 64 бит)
скомпилированные mex исполняемые файлы не могут быть вызваны из среды C ++ насколько мне известно. Они работают с командным окном Matlab / Matlab Function.
Пример:
система («mymex») выдаст мне ошибку как:
'mymex' is not recognized as an internal or external command,
operable program or batch file.
Система ( «ttt.mexw32»);
will popup a window asking me to select a program to open that file with.
Также у меня есть собственные сомнения в том, что .mexw32 / .mexw64, скомпилированные на одной системе, могут работать на другой, как с .exe (исполняемыми файлами). Причины могут быть несовместимыми версиями Matlab Release и т. Д. (Не знаете об этом, пожалуйста, проверьте об этом один раз)
Вы можете легко использовать их mex исполняемые файлы с Matlab.
Рассматривали ли вы использование mexCallMatlab
?
Вы можете рассматривать mex-файл как стандартную функцию matlab и вызывать его из C ++, используя mexCallMatlab
,
mex файлы — это просто динамические библиотеки. Вы можете загрузить их LoadLibrary
и вызвать их функции с GetProcAddress
, (или эквивалентно на * nix, dlopen
а также dlsym
).
Настройка параметров, совместимых с тем, что передает MatLab, будет немного болезненной, но не особенно сложной. Это поможет, если у вас есть опыт написания mex-функций, так что вы знакомы с соглашением о вызовах.