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 检查文件mime类型的方法

magic 模块可以检查文件的mime类型,而不是从后缀名来判断,例如判断文件是不是视频或图片类型如下: #检查文件类型 mime_type = magic.from_file(fu...

Pandas DataFrame 取一行数据会得到Series的方法

Pandas DataFrame 取一行数据会得到Series的方法

Pandas DataFrame 取一行数据会得到Series的方法 如题,想要取如下dataframe的一行数据,以为得到的还是dataframe lista = [1, 3, 7...

python 基于dlib库的人脸检测的实现

python 基于dlib库的人脸检测的实现

本周暂时比较清闲,可以保持每日一更的速度。 国外身份证项目新增需求,检测出身份证正面的人脸。最开始考虑mobilenet-ssd,经同事提醒,有现成的人脸库dlib,那就用传统方法尝试一...

详解Python中打乱列表顺序random.shuffle()的使用方法

之前自己一直使用random中 randint生成随机数以及使用for将列表中的数据遍历一次。 现在有个需求需要将列表的次序打乱,或者也可以这样理解: 【需求】将一个容器中的数据每次...

python实现京东秒杀功能

本文实例为大家分享了python实现京东秒杀的具体代码,供大家参考,具体内容如下 # _*_coding:utf-8_*_ from selenium import webdriv...