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