我们想在我们的新 python 应用程序中使用用 matlab 编写的函数。我们想使用 ctypes,因为用户不需要在他的机器上使用 matlab。 我们正在测试此方法,但无法使其正常工作。我们缺乏 c 知识(以及更多...)。 这是我们简单的测试 matlab 函数:
function [ z ] = adding( x,y )
z = x + y;
end
我们用 matlab 将其编译成一个共享库 .dll。在 python 解释器中,我们有:
import ctypes
dl = ctypes.CDLL('adding.dll')
现在卡住了,因为在matlab中找不到访问函数的命令。
我们该怎么办?
最佳答案
简答 - 否
您不能将用 MATLAB 编写的代码导出为 DLL 形式的 C 并在 python 端使用 ctypes 与之交互,这样您之后就可以期望通过 unix 管道(如 mlabwrapper)进行的常规通信获得显着的性能提升。
问题在于此类 DLL 依赖于 MCR(matlab 运行时)。 DLL 以混淆的形式包含您的源代码。当您调用导出的函数时 - DLL 被加载,然后解压缩源代码,创建 MATLAB(解释器)的实例并将您的代码及其结果与 MATLAB JIT 进行通信。此功能称为“MATLAB 编译器工具箱”。或者,它可以生成操作系统可执行文件(遵循相同的逻辑)。
用 C/C++ 重写(失去对 MATLAB 的依赖)
如果您没有像 here 中那样幸运地代码生成您的项目.考虑用普通 C 重写您的代码,或使用 C++ 库作为 IT++ 或 Armadillo。
关于python - matlab 到 python 使用 ctypes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15292711/