我在C中编写了一些函数,我希望通过Python脚本访问它们。在我的研究中,我发现了ctypes
和struct
库以及以下教程解释了如何
访问共享对象和dll(http://python.net/crew/theller/ctypes/tutorial.html#loading-dynamic-link-libraries)。但是,我找不到一个简单的解决方案,如何在同一个文件夹中导入,使用或访问我的C方法。
您能否介绍一下如何通过Python访问我的C方法?
答案 0 :(得分:1)
看看this tutorial,对我来说似乎很简单。
基本上你使用Python.h编写C函数,将其编译为动态库,这将成为一个python模块。
答案 1 :(得分:1)
您必须将c方法编译到库中。
在Windows上,首先必须将.dll放在Python可以找到它们的位置。 稍后你会像这样调用ctypes库
from ctypes import *
在linux上你必须使用应该使用的dll加载器的LoadLibrary方法,或者你应该通过调用构造函数创建一个CDLL实例来加载库:
cdll.LoadLibrary("libc.so.6")
libc = CDLL("libc.so.6")
根据调用约定,您可以使用cdll,windll,stdcall或olecall之一。例如,如果您有一个stdcall调用约定函数,请执行以下操作:
from ctypes import *
a = cdll.yourModule.MyIntFunction(9)
您可以像调用任何其他Python一样调用这些函数。 ctypes试图保护您不使用错误的参数数量或错误的调用约定调用函数。不幸的是,这仅适用于Windows。
ctypes定义了一些原始c兼容类型,在这里找到完整的参考:http://python.net/crew/theller/ctypes/tutorial.html#id4