我使用python的ctypes调用so库,然后其他普通的指针就可以调用,但是这种类似于python字典请问应该怎么调用,最好贴个代码
2条回答 默认 最新
- 喝茶品人生 2023-05-27 01:27关注
你得先将std::map转换为普通的指针,在传递给so库
#include <map> #include <stdint.h> extern "C" { void* map2ptr(std::map<int32_t, int32_t>* map) { return static_cast<void*>(map); } }
在py加载执行
import ctypes from ctypes import * lib = cdll.LoadLibrary("./libtest.so") class IntMap(Structure): _fields_ = [("key", c_int32), ("value", c_int32)] lib.map2ptr.restype = c_void_p lib.map2ptr.argtypes = [POINTER(c_void_p)] py_dict = {1: 10, 2: 20, 3: 30} cpp_map = [IntMap(k, v) for k, v in py_dict.items()] map_ptr = lib.map2ptr(cpp_map)
解决 1无用
悬赏问题
- ¥15 树莓派与pix飞控通信
- ¥15 自动转发微信群信息到另外一个微信群
- ¥15 outlook无法配置成功
- ¥30 这是哪个作者做的宝宝起名网站
- ¥60 版本过低apk如何修改可以兼容新的安卓系统
- ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
- ¥50 有数据,怎么建立模型求影响全要素生产率的因素
- ¥50 有数据,怎么用matlab求全要素生产率
- ¥15 TI的insta-spin例程
- ¥15 完成下列问题完成下列问题