我有一个带有已知界面的Matlab mex文件,这个mex文件是由其他人提供的,所以我无法访问代码。有没有有效的方法在C ++中调用mex函数?谢谢!
答案 0 :(得分:0)
来自Matlab的mexext call 告诉您系统允许的兼容性。 (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一起使用。
答案 1 :(得分:0)
您是否考虑过使用mexCallMatlab
?
您可以将mex文件视为标准matlab函数,并使用mexCallMatlab
从C ++调用它。
答案 2 :(得分:0)
mex文件只是动态库。您可以使用LoadLibrary
加载它们,并使用GetProcAddress
调用它们的函数。 (或等效于* nix,dlopen
和dlsym
)。
设置参数以与MatLab传递的内容兼容将会有点痛苦,但并不是特别困难。如果你有自己编写mex函数的经验会很有帮助,所以你熟悉调用约定。