Python ctypes вызов простой библиотеки dll c++


Мне действительно трудно вызвать простую c++ dll из python, используя ctypes

Ниже приведен мой 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

Любезно помогите.

1 2

1 ответ:

Вы не сказали ctypes, какого типа возвращаемое значение, и поэтому предполагается, что это целое число. Но на самом деле это указатель. Задайте атрибут restype, чтобы ctypes знали, как интерпретировать возвращаемое значение.

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