我正在尝试使用ctypes将Python字符串传递给c函数(DLL)。该函数需要一个const char *。我正在使用create_string_buffer,但它返回一个错误: 引发TypeError(init) TypeError:
我的python代码非常简单:
testUpdate = myDll['testUpdate']
def testUpdate(Path):
p_path = ctypes.create_string_buffer(Path)
print ctypes.sizeof(p_path), repr(p_path.raw)
print repr(p_path.value)
testUpdate(p_path)
testUpdate.restype = ctypes.c_char
我的C代码更简单:
char testUpdate(const char* softwareToolsPath){
char p;
p = *softwareToolsPath;
return p;
}
我看到这篇文章: create_string_buffer throwing error TypeError: str/bytes expected instead of str instance 但它没有帮助。有人可以帮忙吗?
我正在使用python 2.7。
为了避免任何混淆,我所要做的就是给DLL一个Path(使用Python)。该DLL将打开路径指向的文件并发挥其魔力。所以我只是想为现有的C函数编写一个小包装器。
答案 0 :(得分:1)
我很困惑。 testUpdate(p_path)
是否应该调用C函数?它看起来像递归调用python代码(使用错误的参数类型)。尝试重命名Python函数。
顺便说一下,您的C代码有问题。我想你想要的是
char * testUpdate(const char * softwareToolsPath) {
char * p;
p = softwareToolsPath;
return p;
}