python3利用ctypes传入一个字符串类型的列表方法

yipeiwu_com6年前Python基础

c语言里:c_p.c

#include <stdio.h>

void get_str_list(int n, char *b[2])
{
 printf("in c start");
 for(int i=0;i<n;i++)
 {
  printf("%s", *(b+i));
  printf("\n");
 }
 printf("in c end");
}

编译为动态库的命令:

gcc -o hello1.so -shared -fPIC c_p.c

python里:p_c.py

from ctypes import *
ll = cdll.LoadLibrary
lib = ll("./12_23_ctype_list/hello1.so")
n = 3
str1 = c_char_p(bytes("nihao", 'utf-8'))
str2 = c_char_p(bytes("shijie", 'utf-8'))

a = (c_char_p*2)(str1, str2)
lib.get_str_list(2, a)

输出

in c startnihao
shijie
in c end

以上这篇python3利用ctypes传入一个字符串类型的列表方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python如何使用Gitlab API实现批量的合并分支

这篇文章主要介绍了Python如何使用Gitlab API实现批量的合并分支,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.需求:...

Python备份目录及目录下的全部内容的实现方法

本来是想写一个东西可以直接调用TortoiseSVN保存当前代码到一个分枝下的。 可惜调用SVN的部分还在研究。就先写了目录拷贝的部分。 如果有喜欢研究Python的童鞋愿意提供想法或者...

python简单读取大文件的方法

本文实例讲述了python简单读取大文件的方法。分享给大家供大家参考,具体如下: Python读取大文件(GB级别)采用的办法很简单: with open(...) as f: f...

Python帮你微信头像任意添加装饰别再@微信官方了

Python帮你微信头像任意添加装饰别再@微信官方了

@微信官方 昨天朋友圈刷爆了@微信官方的梗,从起初的为头像添加国旗,到最后的各种Book思议的需求…而我呢?@了辣么辣么多的奥特曼,结果还是加班到12点多…最后想想,人还是得靠...

使用python制作游戏下载进度条的代码(程序说明见注释)

使用python制作游戏下载进度条的代码(程序说明见注释)

import time # time模块中包含了许多与时间相关的模块,其中通过time()函数可以获取当前的时间。 count = 100 print("开始下载".center(...