我真的很难使用ctypes从python调用一个简单的c ++ dll
以下是我的C ++代码:
#ifdef __cplusplus
extern "C"{
#endif
__declspec(dllexport) char const* greet()
{
return "hello, world";
}
#ifdef __cplusplus
}
#endif
...
我的Python代码:
import ctypes
testlib = ctypes.CDLL("CpLib.dll");
print testlib.greet();
当我运行我的py脚本时,我得到了-97902232
请帮忙。
答案 0 :(得分:3)
你没有告诉ctypes返回值是什么类型,所以它假定它是一个整数。但它实际上是一个指针。设置restype属性,让ctypes知道如何解释返回值。
import ctypes
testlib = ctypes.CDLL("CpLib.dll")
testlib.greet.restype = ctypes.c_char_p
print testlib.greet()