typedef aus dll nutzen
-
hi,
sagt mal
ist es möglich ein typedef aus einer eingebundenen dll zu nutzen?
Oder muss ich die erneut definiern?mfg
-
Sowas wie ein typedef sind lediglich Informationen für den Compiler, in der fertig kompilierten Binary (exe, dll etc.) ist nichts mehr davon enthalten. Die Antwort lautet also selbstverständlich: Nein. Deine dll kommt aber evtl. mit einem passenden Header, welcher den entsprechenden typedef möglicherweise enthält...
-
schnelle antwort, danke
mist, also bleibt mir nix anderes über als die typedefs neu zu erstellen
Wie sieht es den mit structs aus? kann ich die verwenden?
-
Mit structs sieht es nicht anders aus, generell mit jedem Sprachkonstrukt. Eine dll bietet eine Reihe von Funktionen an, die du aufrufen kannst, wenn du weißt wie und das wars. Theoretisch gibt's auch noch globale Variablen, aber die ignorieren wir besser. Vom Source Code bleibt in der dll in erster Näherung keine Spur.
-
hm, gibt es kein ausweg?
ich hab mir die ganzen structs mal angeschaut, dabei laufen so einige ins leerewie z.B.
struct st_vio; /* Only C */ typedef struct st_vio Vio; typedef struct st_net { ... Vio *vio; ... } NET;
struct st_vio;
ist doch ohne inhalt oder?
oder ist "st_vio schon wo anders definiert?
-
crischan schrieb:
struct st_vio;
ist doch ohne inhalt oder?
oder ist "st_vio schon wo anders definiert?Das ist nur eine Deklaration, keine Definition. Ich würde mal vermuten, es ist nur im Code der dll definiert, ist ein relativ gängier Pattern...
-
ok,
also die header von der dll erneut einbinden, das wollte ich zwar vermeiden aber najadanke dir für deine hilfe
-
oder,
kann man ein leeren struct erstellen der dann von der dll-function mit den übergabewerten gefüllt wird?
-
crischan schrieb:
oder,
kann man ein leeren struct erstellen der dann von der dll-function mit den übergabewerten gefüllt wird?
Nein. Ein struct ist keine Hashtable o.ä. sondern nur ein Stück Speicher einer bestimmten Größe, alle Informationen zu Name und Typ von Komponenten sowie der Größe des Structs sind ausschließlich zur Compilezeit vorhanden.
crischan schrieb:
ok,
also die header von der dll erneut einbinden, das wollte ich zwar vermeiden aber najaWenn du die sowiso schon includiert hast und die Typdefinition ist dort nicht enthalten dann hilft auch zweimal includieren nichts.
Aber wenn ein Typ nicht im Header definiert ist, dann ist der Zugriff auf dessen Komponenten auch nicht Teil der API, also brauchst du die Definition nicht (an internen Daten einer Bibliothek rumzufummeln ist keine gute Idee).