【发布时间】:2013-02-19 00:00:43
【问题描述】:
我有一个已知接口的 Matlab mex 文件,这个 mex 文件是由其他人提供的,所以我无法访问代码。有没有什么有效的方法可以在 C++ 中调用 mex 函数?谢谢!
【问题讨论】:
我有一个已知接口的 Matlab mex 文件,这个 mex 文件是由其他人提供的,所以我无法访问代码。有没有什么有效的方法可以在 C++ 中调用 mex 函数?谢谢!
【问题讨论】:
您是否考虑过使用mexCallMatlab?
您可以将 mex 文件视为标准 matlab 函数,并使用 mexCallMatlab 从 C++ 调用它。
【讨论】:
mexext 调用 来自 Matlab 告诉您允许的系统兼容。 (32 位或 64 位)
无法从 C++ 环境调用mex 编译的可执行文件AFAIK。它们与 Matlab 命令窗口/ Matlab 函数一起工作。
例如:
system("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 一起使用。
【讨论】:
mex 文件只是动态库。您可以使用LoadLibrary 加载它们并使用GetProcAddress 调用它们的函数。 (或在 *nix、dlopen 和 dlsym 上等效)。
将参数设置为与 MatLab 传递的内容兼容会有点麻烦,但并不是特别困难。如果您有自己编写 mex 函数的经验,这将有所帮助,因此您熟悉调用约定。
【讨论】: