Я действительно испытываю трудности с вызовом простого 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
Любезно помочь.
Вы не сказали ctypes, какой тип является возвращаемым значением, и поэтому предполагается, что это целое число. Но это на самом деле указатель. Установите атрибут restype, чтобы ctypes знал, как интерпретировать возвращаемое значение.
import ctypes
testlib = ctypes.CDLL("CpLib.dll")
testlib.greet.restype = ctypes.c_char_p
print testlib.greet()
Других решений пока нет …