日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發(fā)布時間:2025/3/21 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python ctypes库5_如何传递一个字符串数组 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

直接上代碼:

??? 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;?? ?
??? }


??? # 傳遞字符串數(shù)組
??? # 對應(yīng)c++ test_str_arr
??? ?
??? import ctypes
??? path = r'E:\01_Lab\VisualStudioLab\cpp_dll\cpp_dll\Debug\cpp_dll.dll'
??? dll = ctypes.WinDLL(path)
??? ?
??? # 傳遞的數(shù)據(jù)
??? char_p_arr = ctypes.c_char_p * 100;
??? arr = char_p_arr(b'google',b'baidu',b'qq')
??? ?
??? # 返回的數(shù)據(jù)
??? 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)) #傳遞數(shù)組指針
??? ret_ptr.contents.str_ptr[2].decode()
?

總結(jié)

以上是生活随笔為你收集整理的python ctypes库5_如何传递一个字符串数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。