Вызовите mex-файл matlab в переполнении стека

У меня есть mex-файл Matlab с известным интерфейсом, этот mex-файл предоставлен другими парнями, поэтому я не могу получить доступ к коду. Есть ли эффективный способ вызова функции mex в C ++? Спасибо!

1

Решение

  1. мексекстовый вызов из Matlab говорит вам разрешено совместимо для вашей системы. (32 бит или 64 бит)

  2. скомпилированные 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.

0

Другие решения

Рассматривали ли вы использование mexCallMatlab?
Вы можете рассматривать mex-файл как стандартную функцию matlab и вызывать его из C ++, используя mexCallMatlab,

0

mex файлы — это просто динамические библиотеки. Вы можете загрузить их LoadLibrary и вызвать их функции с GetProcAddress, (или эквивалентно на * nix, dlopen а также dlsym).

Настройка параметров, совместимых с тем, что передает MatLab, будет немного болезненной, но не особенно сложной. Это поможет, если у вас есть опыт написания mex-функций, так что вы знакомы с соглашением о вызовах.

0
По вопросам рекламы [email protected]