我有一个C函数,它需要一个\0终止字符串列表作为输入:
void external_C( int length , const char ** string_list) {
// Inspect the content of string_list - but not modify it.
}
在python中(使用ctypes),我想基于python字符串列表调用此函数:
def call_c( string_list ):
lib.external_C( ?? )
call_c( ["String1" , "String2" , "The last string"])
关于如何在python端构建数据结构,有什么提示吗?注意,我保证C函数不会改变string_list中字符串的内容。
此致
约阿金
5条答案
按热度按时间wpcxdonn1#
zbsbpyhn2#
非常感谢您;我还做了一个类似这样的变化:
然后在C函数中,我遍历了(char**)列表,直到找到一个NULL。
zzlelutf3#
使用ctype
创建过期列表(字符串)
发送字符串数组的逻辑
通过在数组中循环将字符串数组转换为字节数组
逻辑ctypes初始化长度为数组的指针
将字节数组赋给指针
tcbh2hod4#
我只是使用SWIG类型Map
1.在
demo.i
接口文件中写入自定义类型Map。2.生成扩展
3.导入python中的模块。
nxowjjhe5#
这是一个很老的问题,但我认为值得补充,如果人们仍然搜索类似的问题。
使用numpy可能是处理所有低级操作和与库链接的最简单方法。
当你构建char* 的numpy数组时,你可以直接用ctypes得到array(的指针,然后直接把它交给需要char**的库。
你可以打电话给