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

时间:2022-09-07 17:55:10

c语言里:c_p.c

?
1
2
3
4
5
6
7
8
9
10
11
12
#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");
}

编译为动态库的命令:

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

python里:p_c.py

?
1
2
3
4
5
6
7
8
9
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)

输出

?
1
2
3
in c startnihao
shijie
in c end

以上这篇python3利用ctypes传入一个字符串类型的列表方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/abc15766228491/article/details/78882605