您当前的位置: 首页 >  phymat.nico Python

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

phymat.nico 发布时间:2020-01-15 19:31:07 ,浏览量: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()
 

关注
打赏
查看更多评论

phymat.nico

暂无认证

  • 5浏览

    0关注

    1946博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录