使用ctypes从matlab到python
我们希望在新的python应用程序中使用matlab编写的函数。我们希望使用ctypes,因为用户的机器上不需要matlab。 我们正在测试此方法,但无法使其工作。我们缺乏c语言知识(还有更多…)。 这是我们的简单测试matlab函数:使用ctypes从matlab到python,python,matlab,ctypes,Python,Matlab,Ctypes,我们希望在新的python应用程序中使用matlab编写的函数。我们希望使用ctypes,因为用户的机器上不需要matlab。 我们正在测试此方法,但无法使其工作。我们缺乏c语言知识(还有更多…)。 这是我们的简单测试matlab函数: function [ z ] = adding( x,y ) z = x + y; end 我们用matlab将其编译成一个共享库.dll。在python解释器中,我们有: import ctypes dl = ctypes.CDLL('addin
function [ z ] = adding( x,y )
z = x + y;
end
我们用matlab将其编译成一个共享库.dll。在python解释器中,我们有:
import ctypes
dl = ctypes.CDLL('adding.dll')
现在我们被卡住了,因为我们在matlab中找不到访问函数的命令。我们应该怎么做?有很多资源/教程可以用来解释如何在dll中使用ctypes和调用函数。例如,见 如果我没记错的话,matlab编译器应该正确地从dll中导出所有函数,这样就可以从ctypes中访问它们。但是,在尝试加载dll时,必须确保matlab库/运行时位于库路径中。matlab网站上有很多关于这方面的文档,例如参见。简短回答-否。 您不能将MATLAB中编写的代码以DLL的形式导出为C,并在python端使用ctypes与之进行接口,这样您就可以期望在以后通过unix管道(如mlabwrapper)进行常规通信时获得显著的性能提升 问题是这样的DLL依赖于MCR(matlab运行时)。DLL以模糊的形式包含源代码。调用导出函数时,加载DLL,DLL随后解压源代码,创建MATLAB实例(解释器),并将代码及其结果与MATLAB JIT进行通信。此功能称为“MATLAB编译器工具箱”。或者,它可以生成操作系统可执行文件(遵循相同的逻辑) 在C/C++中重写(失去对MATLAB的依赖性)
如果您没有幸运地按照中的代码生成项目。考虑在C中重写代码,或者使用C++库作为它的+++或犰狳。在你的最后一句话中,我假设你是指“从Python中访问DLL中的Matlab函数”,对吗?的确,它帮助MATLAB程序转化为C++,因为它提供了一个。如果运行时安装,我们可以访问DLL吗?