Ich habe eine C-Struktur, die wie folgt aussieht:ctypes: Wie definiere ich ein Array einer Struktur als ein Feld einer anderen Struktur?
typedef struct _DXYZ {
DXYZSTATE State[];
} DXYZ, *PDXYZ
im Wesentlichen eine Reihe von DXYZSTATE
, von unbekannter Größe.
Wenn ich versuche, diese Struktur in ctypes
zu deklarieren, bin ich mir nicht sicher, was zu tun ist.
class DXYZ(Structure):
_fields_ = [
('State', ???)
]
Was verwende ich, um ein Array unbekannter Größe einer Struktur darzustellen?
Wenn es hilft, ist das Beispiel für seine Verwendung in C die folgenden, malloc'd mit einer an anderer Stelle bereitgestellten Größe.
CurrentState = (PDXYZ) malloc(statesize);
err = update(CurrentState);
Der Update-Prozess füllt den zuvor zugewiesenen Speicherplatz mit der Struktur aus.
Ich bin nicht sicher, ob ich völlig verstehen, aber es klingt wie funktioniert dies nur, wenn ich festlegen, wie die Daten geschaffen. In meinem Fall habe ich nicht die Kontrolle über die Daten; Es stammt von einer API eines Drittanbieters. Bedeutet das, dass ich keine Ctypes benutzen kann? – user1219358
@ user1219358 Ich baute den Byte-Puffer, um zu simulieren, was Sie von einer API zurückbekommen würden. Ich werde das Beispiel mit einer tatsächlichen C API aktualisieren, wenn ich eine Chance bekomme. –
@ user1219358 Aktualisiertes Beispiel mit einer Test-DLL. –