首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合ctype和swig

组合ctype和swig
EN

Stack Overflow用户
提问于 2011-10-25 16:45:52
回答 2查看 832关注 0票数 3

我已经使用SWIG很长一段时间了--通常我喜欢它。但是使用ctype做回调函数似乎(要容易得多)。

我如何结合这两种与C dll交互的“方式”?

第一步是知道,在dll已经通过导入相应的SWIG模块加载之后,如何将ctype对象获取到dll。

谢谢,

塞巴斯蒂安。

EN

回答 2

Stack Overflow用户

发布于 2011-10-25 18:33:24

缓冲协议可能是您最好的选择( http://docs.python.org/c-api/buffer.html )。

从C代码(例如swig生成的代码)中,您可以通过访问此接口来获取指向底层C数据的指针。

注意,buffer接口有两个版本,Python2.x中的ctypes对象将暴露旧协议,而python3.x中的ctype对象将暴露新协议。

你将不得不下到Python C API级别,但如果你把所有东西都包装得很好的话,只需要一次-例如,可以为支持buffer协议的任何东西创建一个返回void*的%inline函数,并在你的回调类型的类型映射中使用它。

票数 0
EN

Stack Overflow用户

发布于 2011-10-25 18:55:19

如果x.pyd是swig编译的扩展模块,那么你可以这样通过ctype加载dll:

代码语言:javascript
复制
import x
from ctypes import PyDLL
dll = PyDLL(x.__file__)

根据导出函数使用的调用约定,您可能需要使用PyDLL、WinDLL或CDLL。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7886790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档