在python中如何调用PCSC中的接口

想用python调用winscard.dll中的接口实现与IC卡读写器的交互,我知道如何调用方法,但是对于C++和python之间的类型转换实在不知道怎么搞,比如SCar... 想用python调用winscard.dll中的接口实现与IC卡读写器的交互,我知道如何调用方法,但是对于C++和python之间的类型转换实在不知道怎么搞,比如SCardEstablishContext方法的第四个参数,在C++中是一个句柄,但是在python中使用什么类型来代替呢?高手们多指点一二啊! 展开
 我来答
bdwisyou7d
推荐于2016-09-09 · TA获得超过1.3万个赞
知道大有可为答主
回答量:3774
采纳率:81%
帮助的人:1079万
展开全部
你找个工具将这个接口API,自动转换成python版本的就可以了。好象是SWIG和Boost。 这两个以前看过,偶尔还试过几次。之所以建议你用自动工具,就是因为python对于C++扩展麻烦些,对于C语言接口可以使用ctypes和cython简单解决。不过C++如果用这些方法有时候被很麻烦。

boost在linux里会经常用到,在windows下也可以使用。SWIG在一般的教程里都会提及到。SIP也是最近出名的。

下面是一些参考资料,搜索来的。

=== 使用工具进行扩展 ===
虽然扩展过程并不复杂,但也可以使用许多已知的工具简化扩展过程。
(1) SWIG
由David Beazley创建,是一个自动的扩展构造工具。它读入注释的C/C++头文件,为python、tcl、perl等多种脚本语言产生wrap代码。SWIG可以包装大量C++特性到Python的扩展模块中。
评价:swig简单,可以支持多种脚本文件,但支持的c++特性不完备。
(2) SIP
由Phil Thompson创建,是一个C++模块构造器,专门为C++的类创造wrapper。它曾经被用于创建PyQt和PyKDE扩展模块,因此比较出名。
评价:支持C++特征很齐全,但比较复杂。
(3) bgen
该工具被包含在标准Python发布包中的模块构建工具集里,由Jack Jansen维护。它用于产生在Macintosh版本可用的Python扩展模块。
(4) pyfort
由Paul dubois创建,用来产生Fortran语言生成的扩展模块。
(5) cxx
也由Paul Dubois创建,是一个库,为Python的C++扩展提供了友好的API。Cxx允许将许多python对象(如list和tuple)使用到STL的运算中。库也提供了C++异常处理到python异常处理的转化。
(6) WrapPy
由Greg Couch创建,通过读入C++头文件来产生扩展模块。
(7) Boost Python Library
由David Abrahams创建。该库提供了更多与众不同的C++ wrap到python扩展中,而只需要对要扩展的C++类写很少的附加信息。
评价:Boost为C++提供了许多实用的库,如Regex(正则表达式库)、Graph(图组件和算法)、concept check(检查泛型编程中的concept)、Thread(可移植的C++多线程库)、Python(把C++类和函数映射到Python之中)、Pool(内存池管理)等等。

Boost总体来说是实用价值很高,质量很高的库。并且强调对跨平台的支持。但是Boost中也有很多是实验性质的东西,在实际的开发中实用需要谨慎。
boost.python支持的c++特性较多,但是比较复杂。
張員瑛
2013-06-06 · TA获得超过154个赞
知道小有建树答主
回答量:296
采纳率:0%
帮助的人:249万
展开全部
你是想用ctype直接调用吧。句柄对应ctypes.c_int32类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式