Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

19.06.2012, 13:29

zlib Installation

Hallo,

in Blocks 5 hat David ja die zlib bzw. Minizip für das Lesen und Schreiben aus verschlüsselten Archiven benutzt bzw. es gab auch sowas wie ein Tutorial hier im Forum dazu. Ich finde die Installation der lib nur irgendwie merkwürdig. Ich hab mir die neueste Versione (1.2.7) geladen, über das vc10 Projekt erstellt, im Blocks5-Projekt dann die zip.h und zlib.h inkludiert und bin dann davon ausgegangen, dass es reicht, die zlibwapi.lib zu linken und die dll im Projektverzeichnis zu haben. In dem Tutorial stand dann, dass man auch noch sämtlich .c-Dateien im Projekt haben muss.
Welchen Sinn hat dann aber das Gelinke? Wenn ich die lib und dll rausschmeiße, funktioniert es natürlich auch und ich will ja nicht unbedingt 30 Dateien der zlib noch in meinem Projekt rumfliegen haben. Mache ich da irgendwas beim linken falsch?
Wenn ich die statische lib linke, krieg ich dieselben unresolved symbols wie mit der dll.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

19.06.2012, 14:57

Also beim Einbinden per lib braucht man eig die c Dateien nicht mehr (egal ob dyn oder statisch), was ja der eigentliche Witz an den libs ist. Wenn du dann noch unaufgelöste Symbole hast, ist beim linken was schief gelaufen. Gerade beim Erstellen von DLL muss man dieses export/import für alles einbauen, was man von extern erreichbar machen möchte. Daher könnte in deinem Fall das Erstellen einer statischen Lib einfacher sein.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

3

19.06.2012, 19:49

Du meinst im Code muss jede Funktion per dllimport aufgerufen wie beim TRIBASE-macro, wenn ich mich recht entsinne?

Die statische lib hab ich wie gesagt auch schon probiert, wird ja automatisch miterstellt - gleiche Linkererrors. Wenn ich die lib allerdings per Editor aufmache, stehen die angeblich fehlenden Funktionen alle drin ?(

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

19.06.2012, 21:20

Also bei mir wird entweder die statische oder die dynamische erstellt. Man darf nicht vergessen dass bei einer DLL auch immer eine LIB zum Importieren miterstellt wird, aber nicht mit einer statische Lib zu verwechseln ist.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

5

20.06.2012, 15:14

Naja, hier dann mal ein Screenshot, wie es bei mir aussieht:


(Link)


oben links alle Verzeichnisse, die der build in der Debug-Version erstellt, oben rechts die dll, unten die statische lib.

Wenn ich die dll benutze, trage ich das Verzeichnis als zusätzliches Link-Verzeichnis ein, die zlibwapi.lib als zusätzliche Abhängigkeit und die dll kommt ins Projektverzeichnis. Will ich die statische lib benutzen, trage ich da auch das Verzeichnis ein und die zlibstat.lib als Abhängigkeit. In beiden Fällen unresolved external symbol _zipOpen, usw.

Wenn wir schon dabei sind: Was macht eigentlich die zusätzliche lib der dll und wie unterscheidet sie sich von der statischen lib?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

20.06.2012, 19:55

Leider bin ich darin kein Experte sonder nur Anwender. Bei der statischen Lib sind neben den Informationen fürs Importieren auch gleich der entsprechende binarycode mitdrinne. Bei der dynamischen Variante gibt die lib quasi nur den Hinweis wo man den entsprechenden Bytecode in der DLL findet und wie die Signatur aussieht. Ich könnte dir ein für unsere Verwendungszwecke funktionierendes zlib Projekt schicken.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

7

21.06.2012, 11:58

Mit der dll funktioniert es jetzt. Ich hatte vergessen, das Macro ZLIB_WINAPI zu definieren. Nur erklärt das noch nicht, warum es mit der statischen lib nicht funktioniert ;)

Werbeanzeige