我有一个已知接口的 Matlab mex 文件,这个 mex 文件是由其他人提供的,所以我无法访问代码。有没有什么有效的方法可以在 C++ 中调用 mex 函数?谢谢!
问问题
2423 次
3 回答
1
你考虑过使用mexCallMatlab
吗?
您可以将 mex 文件视为标准 matlab 函数,并使用mexCallMatlab
.
于 2013-02-18T15:55:48.497 回答
0
mex 文件只是动态库。您可以使用 加载它们LoadLibrary
并使用 调用它们的函数GetProcAddress
。(或等效于 *nixdlopen
和dlsym
)。
将参数设置为与 MatLab 传递的内容兼容会有点痛苦,但并不是特别困难。如果您有自己编写 mex 函数的经验,这将有所帮助,因此您熟悉调用约定。
于 2013-02-18T16:00:43.420 回答
0
来自 Matlab的mexext 调用会告诉您系统允许的兼容性。(32 位或 64 位)
无法从 C++ 环境AFAIK调用 mex 编译的可执行文件。它们与 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 一起使用。
于 2013-02-15T10:13:38.553 回答