2

我有一个已知接口的 Matlab mex 文件,这个 mex 文件是由其他人提供的,所以我无法访问代码。有没有什么有效的方法可以在 C++ 中调用 mex 函数?谢谢!

4

3 回答 3

1

你考虑过使用mexCallMatlab吗?
您可以将 mex 文件视为标准 matlab 函数,并使用mexCallMatlab.

于 2013-02-18T15:55:48.497 回答
0

mex 文件只是动态库。您可以使用 加载它们LoadLibrary并使用 调用它们的函数GetProcAddress。(或等效于 *nixdlopendlsym)。

将参数设置为与 MatLab 传递的内容兼容会有点痛苦,但并不是特别困难。如果您有自己编写 mex 函数的经验,这将有所帮助,因此您熟悉调用约定。

于 2013-02-18T16:00:43.420 回答
0
  1. 来自 Matlab的mexext 调用会告诉您系统允许的兼容性。(32 位或 64 位)

  2. 无法从 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 回答