2

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

よろしくお願いします。

4

1 に答える 1

3

戻り値の型を ctypes に伝えていないため、整数であると想定されます。しかし、それは実際にはポインターです。restype 属性を設定して、ctypes に戻り値の解釈方法を知らせます。

import ctypes 
testlib = ctypes.CDLL("CpLib.dll")
testlib.greet.restype = ctypes.c_char_p
print testlib.greet()
于 2013-06-24T22:35:15.307 に答える