Próbuję wywoływać funkcje z biblioteki DLL, która wydaje się być utworzona w Delphi. Przykładem a niektórych funkcji obsługiwanych przez DLL są:Czy Python może wywoływać funkcje Delphi w bibliotece DLL?
function oziDeleteWpByName(var name:pansichar):integer;stdcall
kod Pythona Pisałem aby uzyskać dostęp do powyższych funkcji nie działa.
from ctypes import *
libc = cdll.OziAPI
name ='test'
pi = pointer(name)
delname = libc.oziDeleteWpByName
delname(name)
Wygląda na to, że przekazuję nieprawidłowy typ danych do funkcji. Wszelkie pomysły, jak to zrobić dobrze?
Dzięki temu zadziałało. Teraz pomóż z tą funkcją:
funkcja oziGetOziVersion (var Wersja: pansichar; var DataLength: integer): integer; stdcall; Wersja OziExplorer jest zwracana w zmiennej Wersja.
Teraz, jak przekazać "var version", gdy ten, który również zostanie zwrócony.
'var nazwa: pansichar' oznacza, że parametr' name' można zmodyfikować i zwrócić do osoby dzwoniącej. Czy funkcja naprawdę to robi? Czy planujesz przeczytać zawartość 'name' po powrocie funkcji? –
Którą wersję Pythona używasz? Może wprowadzić zmiany w kodowaniu ciągów znaków. –
tak, deklaracja 'var' jest podejrzana. Jeśli Ty, użytkownik 1138 ... napisał tę bibliotekę DLL, dlaczego to zrobiłeś? –