【发布时间】:2010-09-24 00:02:30
【问题描述】:
给定一个字符串:
msg="hello world"
如何将其定义为 ctypes.c_void_p() 数据类型?
以下代码产生“无法转换为指针”异常:
data=ctypes.c_void_p(msg)
data 必须是 C 中的 void* 类型,因为它正在传递给 DLL。
我假设有一种方法可以使用 struct 包来打包/解包字符串,但不幸的是我对这个过程非常不熟悉。
【问题讨论】:
给定一个字符串:
msg="hello world"
如何将其定义为 ctypes.c_void_p() 数据类型?
以下代码产生“无法转换为指针”异常:
data=ctypes.c_void_p(msg)
data 必须是 C 中的 void* 类型,因为它正在传递给 DLL。
我假设有一种方法可以使用 struct 包来打包/解包字符串,但不幸的是我对这个过程非常不熟悉。
【问题讨论】:
这样的?使用ctypes.cast?
>>> import ctypes
>>> p1= ctypes.c_char_p("hi mom")
>>> ctypes.cast( p1, ctypes.c_void_p )
c_void_p(11133300)
【讨论】: