请教大家,2018 年,现在各厂生产环境 C/C++ Binding 都在用什么方式来写?

196 views
Skip to first unread message

YufeiMinds

unread,
Mar 1, 2018, 2:01:29 AM3/1/18
to python-cn(华蟒用户组,CPyUG 邮件列表)
诚心求教,正想做一些 c/c++ 的 python binding,调研了一些方案

- ctypes/cffi,这个是写在官方文档里的,据说支持 pypy,但好像较古老

- cython,我看到的代码里,饿厂的 thriftpy 和 豆瓣的 dpark 在用,是不是意味着它的使用更广泛些?

- boost.python (c++),这个有同学用过吗,有没有上生产环境的案例,boost 本身还是比较有吸引力的

还有哪些方式,欢迎大家补充

参考文献:

2. TonySeek 13 年写的《为 C/C++ 库定制 Python Binding

yegle

unread,
Mar 1, 2018, 2:14:31 AM3/1/18
to pyth...@googlegroups.com
老牌的swig呢?新出的clif呢?

--
邮件来自: `CPyUG`华蟒用户组(中文Python技术邮件列表)
规则: http://code.google.com/p/cpyug/wiki/PythonCn
详情: http://code.google.com/p/cpyug/wiki/CpyUg
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
---
您收到此邮件是因为您订阅了Google网上论坛上的“python-cn(华蟒用户组,CPyUG 邮件列表)”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到python-cn+...@googlegroups.com
要发帖到此群组,请发送电子邮件至pyth...@googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout

Mengyang Li

unread,
Mar 1, 2018, 3:17:49 AM3/1/18
to pyth...@googlegroups.com
我们在用 cython, 我用的libtorrent在用 boost.python

2018-02-28 23:14 GMT-08:00 yegle <cny...@gmail.com>:
老牌的swig呢?新出的clif呢?

On Wed, Feb 28, 2018, 11:01 PM YufeiMinds <yufei...@gmail.com> wrote:
诚心求教,正想做一些 c/c++ 的 python binding,调研了一些方案

- ctypes/cffi,这个是写在官方文档里的,据说支持 pypy,但好像较古老

- cython,我看到的代码里,饿厂的 thriftpy 和 豆瓣的 dpark 在用,是不是意味着它的使用更广泛些?

- boost.python (c++),这个有同学用过吗,有没有上生产环境的案例,boost 本身还是比较有吸引力的

还有哪些方式,欢迎大家补充

参考文献:

2. TonySeek 13 年写的《为 C/C++ 库定制 Python Binding

--
邮件来自: `CPyUG`华蟒用户组(中文Python技术邮件列表)
规则: http://code.google.com/p/cpyug/wiki/PythonCn
详情: http://code.google.com/p/cpyug/wiki/CpyUg
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
---
您收到此邮件是因为您订阅了Google网上论坛上的“python-cn(华蟒用户组,CPyUG 邮件列表)”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到python-cn+unsubscribe@googlegroups.com
要发帖到此群组,请发送电子邮件至python-cn@googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout

--
邮件来自: `CPyUG`华蟒用户组(中文Python技术邮件列表)
规则: http://code.google.com/p/cpyug/wiki/PythonCn
详情: http://code.google.com/p/cpyug/wiki/CpyUg
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
---
您收到此邮件是因为您订阅了Google网上论坛上的“python-cn(华蟒用户组,CPyUG 邮件列表)”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到python-cn+unsubscribe@googlegroups.com
要发帖到此群组,请发送电子邮件至python-cn@googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout



--
Best regards,
ᶘ ᵒᴥᵒᶅ

YufeiMinds

unread,
Mar 1, 2018, 5:56:47 AM3/1/18
to python-cn(华蟒用户组,CPyUG 邮件列表)
多谢大佬推荐!

在 2018年3月1日星期四 UTC+8下午3:14:31,@yegle写道:
老牌的swig呢?新出的clif呢?

On Wed, Feb 28, 2018, 11:01 PM YufeiMinds <yufei...@gmail.com> wrote:
诚心求教,正想做一些 c/c++ 的 python binding,调研了一些方案

- ctypes/cffi,这个是写在官方文档里的,据说支持 pypy,但好像较古老

- cython,我看到的代码里,饿厂的 thriftpy 和 豆瓣的 dpark 在用,是不是意味着它的使用更广泛些?

- boost.python (c++),这个有同学用过吗,有没有上生产环境的案例,boost 本身还是比较有吸引力的

还有哪些方式,欢迎大家补充

参考文献:

2. TonySeek 13 年写的《为 C/C++ 库定制 Python Binding

--
邮件来自: `CPyUG`华蟒用户组(中文Python技术邮件列表)
规则: http://code.google.com/p/cpyug/wiki/PythonCn
详情: http://code.google.com/p/cpyug/wiki/CpyUg
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
---
您收到此邮件是因为您订阅了Google网上论坛上的“python-cn(华蟒用户组,CPyUG 邮件列表)”群组。

YufeiMinds

unread,
Mar 1, 2018, 6:28:49 AM3/1/18
to python-cn(华蟒用户组,CPyUG 邮件列表)
初步阅读了 libtorrent python binding 的源码,很有参考意义,多谢多谢 🙏

在 2018年3月1日星期四 UTC+8下午4:17:49,非常业余写道:

D.Y Feng

unread,
Mar 2, 2018, 12:17:54 AM3/2/18
to pyth...@googlegroups.com
之前折腾过一阵子的cffi,他只能是C库的绑定,试图通过分析头文件来自动生成相应的签名,节省大量的手工时间。

缺陷是,他的自动分析还不完善。比方说我有一个很大的C库,那我先用gcc
-E来把头文件展开,然后把展开的头文件给cffi分析,但由于cffi的C解析不大完善,一些gcc指令会不支持,一些宏运算会不支持,我得手工排除不支持的指令,还patch了cffi才能分析宏运算。

当然如果你是手工来补充签名,那就没这问题,可我一个C库几百个函数,手工来不现实,那跟cython吖其他的工具就没啥区别了。
> --
> 邮件来自: `CPyUG`华蟒用户组(中文Python技术邮件列表)
> 规则: http://code.google.com/p/cpyug/wiki/PythonCn
> 详情: http://code.google.com/p/cpyug/wiki/CpyUg
> 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
> ---
> 您收到此邮件是因为您订阅了Google网上论坛上的“python-cn(华蟒用户组,CPyUG 邮件列表)”群组。
> 要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到python-cn+...@googlegroups.com
> 要发帖到此群组,请发送电子邮件至pyth...@googlegroups.com
> 要查看更多选项,请访问https://groups.google.com/d/optout



--


DY.Feng(叶毅锋)
yyfeng88625@twitter
DYFeng@github
DYFeng@behance

吴曼硕

unread,
Mar 2, 2018, 4:53:18 AM3/2/18
to python-cn(华蟒用户组,CPyUG 邮件列表)
我们是直接用python c api

王恩俊

unread,
Jun 6, 2018, 12:11:49 PM6/6/18
to python-cn(华蟒用户组,CPyUG 邮件列表)
如果要结合大型C++工程的autotools文件,好像Swig比较成熟。我用Swig编译了Pulp所依赖的Cbc源码


On Thursday, March 1, 2018 at 3:14:31 PM UTC+8, @yegle wrote:
老牌的swig呢?新出的clif呢?

On Wed, Feb 28, 2018, 11:01 PM YufeiMinds <yufei...@gmail.com> wrote:
诚心求教,正想做一些 c/c++ 的 python binding,调研了一些方案

- ctypes/cffi,这个是写在官方文档里的,据说支持 pypy,但好像较古老

- cython,我看到的代码里,饿厂的 thriftpy 和 豆瓣的 dpark 在用,是不是意味着它的使用更广泛些?

- boost.python (c++),这个有同学用过吗,有没有上生产环境的案例,boost 本身还是比较有吸引力的

还有哪些方式,欢迎大家补充

参考文献:

2. TonySeek 13 年写的《为 C/C++ 库定制 Python Binding

--
邮件来自: `CPyUG`华蟒用户组(中文Python技术邮件列表)
规则: http://code.google.com/p/cpyug/wiki/PythonCn
详情: http://code.google.com/p/cpyug/wiki/CpyUg
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
---
您收到此邮件是因为您订阅了Google网上论坛上的“python-cn(华蟒用户组,CPyUG 邮件列表)”群组。

Daetalus

unread,
Jun 8, 2018, 4:41:42 AM6/8/18
to python-cn(华蟒用户组,CPyUG 邮件列表)
还有PyQt的母公司Riverbank提供的sip,PyQt和新一代的wxPython phoenix都是用的sip。sip最初基于swig,也是通过修改后的头文件开控制生成的绑定代码。

Qt公司下周将发布官方的Python绑定,Qt for Python。其中用到的是自己开发的shiboken,shiboken主要是通过一个用xml表示的typesystem_xxx.xml文件来控制生成的绑定代码。

shiboken能应对复杂的情况,但目前还不成熟,其中的字符串转换基本上全是错的,只是在经过一些小修小补后“恰好”能正常工作。但现在为了发布RC版,暂且没管了。而且其中也缺失一些功能。

根据Qt官方说法,shiboken生成的绑定比boost.python要小。

在 2018年3月1日星期四 UTC+1上午8:01:29,YufeiMinds写道:
Reply all
Reply to author
Forward
0 new messages