Python Ctypes试用一例

“自己的懒惰,就是别人的进步”

要说难其实一点都不难,关键还是在数据类型转换上,比较恼人,像int,char之类的网上有好多示例,这里记录一下我遇到的麻烦:char*, char**的转换方式。为了更好的理解,我自己做了一个dll,来测试这一部分:

这是windows版本的,linux上只需要将“__declspec(dllexport) __stdcall”删除

然后是python调用示例

这也是windows版本的,在linux下只需要将

libc = windll.LoadLibrary("libpydll.dll")

替换为

libc = cdll.LoadLibrary("libpydll.so")

然后将libpydll.so移到/usr/lib目录下

最主要的地方就是create_sring_buffer和POINTER(c_char)(),前者在官方ctypes说明里有,如果要输出字符串,就用这种方式;后者是在stackoverflow上找到的,提取output里面的字符串,虽然一个字符一个字符的连接也可以工作,但是我觉得这种办法很笨拙,不知道还有没有更好替代方式

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据