1

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

你能推荐我一种如何通过 Python 访问我的 C 方法的方法吗?

4

2 回答 2

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

于 2013-10-24T12:57:08.023 回答
1

看看这个教程,对我来说似乎很简单。

基本上,您使用 Python.h 编写 C 函数,将其编译为动态库,这将成为一个 Python 模块。

于 2013-10-24T12:50:05.240 回答