PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C: 4GL und DLL, Speicher, Strukturgröße



Thomas Engelke
20-01-2006, 16:14
Hallo!

Ich programmiere in einer 4GL (http://de.wikipedia.org/wiki/4GL). Diese soll jetzt eine Anbindung an pcre (http://www.pcre.org) erhalten.

Normalerweise macht meine 4GL Probleme, wenn ich auf Speicher zugreifen möchte, den ich in einer von mir geschriebenen DLL allokiert habe. Also wird normalerweise zuerst die zu allokierende Größe an die 4GL zurückgegeben, dort allokiert, der Pointer darauf an die DLL-Funktion übergeben und das Ergebnis dorthin geschrieben.

Bei pcre könnte es damit Probleme geben. Ich möchte das kompilierte Pattern (pcre *) an die 4GL übergeben. Dafür benötige ich natürlich die Information, welche Größe das tatsächliche Pattern in kompilierter Form benötigt. Also versuche ich mittels


intGroesse=sizeof(pcre);

die Größe herauszufinden. Dies schlägt fehl: "sizeof applied to an incomplete type". Die Definition von pcre lautet:


struct real_pcre; /* declaration; the definition is private */
typedef struct real_pcre pcre;

Ich habe den Kommentar extra da gelassen. Kann mir jemand erzählen, was dies genau bedeutet? Wie kann ich die Größe herausfinden, so daß ich im Speicherbereich meiner 4GL-Applikation das kompilierte Pattern liegenlassen kann? Oder hat jemand eine Idee, wie ich das Speicherzugriffsproblem von oben lösen kann?

Danke!

TME