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如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解

前言 在许多的情况下,很多要匹配内容是一起出现,或者一起不出现的。比如《》,< >,这样的括号,不存在使用半个的情况。因此,在正则表达式里也有一致性的判断,要么两个尖括号一起...

python2.7到3.x迁移指南

目前,Python 科学栈中的所有主要项目都同时支持 Python 3.x 和 Python 2.7,不过,这种情况很快即将结束。去年 11 月,Numpy 团队的一份声明引发了数据科学...

python基础教程之面向对象的一些概念

Python使用类(class)和对象(object),进行面向对象(object-oriented programming,简称OOP)的编程。 面向对象的最主要目的是提高程序的重复使...

Python开发如何在ubuntu 15.10 上配置vim

Python开发如何在ubuntu 15.10 上配置vim

1,安装vim,你可以使用ubuntu 自带的apt-get 工具安装。 apt-get install vim-gnome 2,安装成功后,进行配置 1>首先进行自动提示补...

Python面向对象编程基础解析(一)

1.什么是面向对象 面向对象(oop)是一种抽象的方法来理解这个世界,世间万物都可以抽象成一个对象,一切事物都是由对象构成的。应用在编程中,是一种开发程序的方法,它将对象作为程序的基本...