Типы Python, вызывающие простые c ++ dll

Я действительно испытываю трудности с вызовом простого 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

Любезно помочь.

2

Решение

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

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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector