我的任务是将 c 库“包装”到 python 类中。这些文档在这个问题上非常模糊。看来他们期望只有高级 python 用户才会实现 ctypes。
一些逐步的帮助会很棒。
所以我有我的c 库。我该怎么办?我把什么文件放在哪里?如何导入库?我读到可能有一种方法可以“自动换行”到Python?
(顺便说一句,我在 python.net 上完成了 ctypes 教程,但它不起作用。这意味着我认为他们假设我应该能够填写其余步骤。)
事实上,这是我使用他们的代码得到的错误:
File "importtest.py", line 1
>>> from ctypes import *
SyntaxError: invalid syntax
我真的可以在这方面使用一些逐步的帮助!
这是一个快速而肮脏的 ctypes 教程。
首先,编写您的 C 库。这是一个简单的 Hello world 示例:
测试库.c
#include <stdio.h>
void myprint(void);
void myprint()
{
printf("hello world\n");
}
现在将其编译为共享库(mac 修复在这里找到):
$ gcc -shared -Wl,-soname,testlib -o testlib.so -fPIC testlib.c
# or... for Mac OS X
$ gcc -shared -Wl,-install_name,testlib.so -o testlib.so -fPIC testlib.c
然后,使用 ctypes 编写包装器:
testlibwrapper.py
import ctypes
testlib = ctypes.CDLL('/full/path/to/testlib.so')
testlib.myprint()
现在执行它:
$ python testlibwrapper.py
你应该看到输出
Hello world
$
如果您已经有了一个库,则可以跳过本教程的非 Python 部分。确保 ctypes 可以通过将其放入来找到该库/usr/lib
或另一个标准目录。如果这样做,则在编写包装器时无需指定完整路径。如果您选择不这样做,您must调用时提供库的完整路径ctypes.CDLL()
.
这里不是提供更全面的教程的地方,但如果您在此网站上寻求有关特定问题的帮助,我相信社区会为您提供帮助。
PS:我假设你使用的是 Linux,因为你已经使用过ctypes.CDLL('libc.so.6')
。如果您使用其他操作系统,情况可能会发生一些变化(或很多变化)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)