Python,C:如何通过Python访问用C编写的方法?

时间:2013-10-24 12:28:55

标签: python c ctypes

我在C中编写了一些函数,我希望通过Python脚本访问它们。在我的研究中,我发现了ctypesstruct库以及以下教程解释了如何 访问共享对象和dll(http://python.net/crew/theller/ctypes/tutorial.html#loading-dynamic-link-libraries)。但是,我找不到一个简单的解决方案,如何在同一个文件夹中导入,使用或访问我的C方法。

您能否介绍一下如何通过Python访问我的C方法?

2 个答案:

答案 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