python ctypes库5_如何传递一个字符串数组

直接上代码:

struct struct_str_arr
{
	char* str_ptr[1000];
};

struct_str_arr str_arr;
struct_str_arr* str_arr_ptr = (struct_str_arr*)malloc(sizeof(str_arr));


DLLEXPORT struct_str_arr* __stdcall test_str_arr(char *str_ptr[])    
{    
	str_arr_ptr->str_ptr[0] = str_ptr[0];
	str_arr_ptr->str_ptr[1] = str_ptr[1];
	str_arr_ptr->str_ptr[2] = str_ptr[2];

    return str_arr_ptr;    
}


# 传递字符串数组
# 对应c++ test_str_arr

import ctypes
path = r'E:\01_Lab\VisualStudioLab\cpp_dll\cpp_dll\Debug\cpp_dll.dll'
dll = ctypes.WinDLL(path)

# 传递的数据
char_p_arr = ctypes.c_char_p * 100;
arr = char_p_arr(b'google',b'baidu',b'qq')

# 返回的数据
class StructPointer(ctypes.Structure):  
    _fields_ = [("str_ptr", ctypes.c_char_p * 1000)]  

    
dll.test_str_arr.restype = ctypes.POINTER(StructPointer)
ret_ptr = dll.test_str_arr(ctypes.pointer(arr)) #传递数组指针
ret_ptr.contents.str_ptr[2].decode()

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值