Das einzige Beispiel für den Aufruf aus der C-Sprache in Python ist das Beispiel für die Rückgabe des int-Typs von qsort. Es scheint, dass es eine Möglichkeit gab, eine schwierige Windows-Struktur zurückzugeben, die nicht gefunden werden konnte.
CBFUNC=CFUNCTYPE(c_char_p,c_char_p)
cbfunc=CBFUNC(py_cb_func)
Normalerweise
msg = "Hello, Trusterd.this is Python."
buf = create_string_buffer(msg.encode('UTF-8'))
return buf
Dann
Traceback (most recent call last):
File "_ctypes/callbacks.c", line 302, in 'converting callback result'
TypeError: bytes or integer address expected instead of c_char_Array_32 instance
Exception ignored in: <function py_cb_func at 0x1041dd510>
Obwohl der Rückgabewert auf der Seite der C-Sprache empfangen werden kann, Ich konnte die beabsichtigte Zeichenfolge nicht empfangen.
msg = "Hello, Trusterd.this is Python."
buf = create_string_buffer(msg.encode('UTF-8'))
c = cast(buf, POINTER(c_char))
return addressof(c.contents)
Damit kann die beabsichtigte Zeichenfolge an die C-Sprachseite zurückgegeben werden.
Übrigens lautet die Angabe des Arguments beim Aufruf der normalen C-Sprachseite
hogefunc(create_string_buffer(msg.encode('UTF-8')))
Sie können es ohne Probleme tun.
Recommended Posts