我真的很难用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这个奇怪的返回值

请协助。

最佳答案

您没有告诉ctypes返回值是什么类型,因此它假定它是整数。但这实际上是一个指针。设置restype属性,使ctypes知道如何解释返回值。

import ctypes
testlib = ctypes.CDLL("CpLib.dll")
testlib.greet.restype = ctypes.c_char_p
print testlib.greet()

关于c++ - Python ctypes调用简单的c++ dll,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17286044/

10-13 03:00