Seite 1 von 1
zlib Import ist unvollständig
Verfasst: 06.02.2022 12:24
von Benubi
Ich habe schon vor einigen Jahren ein paar selbstgebraute (Un-) Zip libs mir geschrieben welche die zlib.lib nutzen.
Ich bekomme jetzt Fehlermeldungen beim Versuch zu kompilieren wenn ich einige dieser Funktionien nutze. Beispiel:
Code: Alles auswählen
ImportC "zlib.lib"
gzclose(*zgFile)
EndImport
Debug gzclose(@dummy.i)
Ich vermute das Problem ist auf die gz API beschränkt, weiß es aber nicht. Ich habe vor einigen Jahren mit gz gespielt und damit keine Probleme gehabt, aber ich kann mich nicht erinnern ob ich die Dateien auch sauber geschlossen habe. Es hatte ja auch funktioniert die komprimierten Textdateien zu lesen oder zu schreiben.
Unter PB 5.73 x86 gibt es 1 fehlende Abhängigkeit __imp_vsnprintf.
Bei allen anderen PB 5.X (x86) Versionen inklusive PB6 Beta 3 (x86) gibt es jedoch 5 unaufgelöste Symbole.
Re: zlib Import ist unvollständig
Verfasst: 06.02.2022 14:36
von ccode_new
Hallo Benubi,
du versucht eine inkompatible Lib einzubinden.
(Es kann sein das deine verwendete Lib für eine C++ Einbindung und nicht für C ausgelegt ist.)
Hier ist z.B. eine passende X64-Lib für Windows.
https://workupload.com/archive/upJNnFqx
Unter Linux funktioniert es z.B. so:
Code: Alles auswählen
ImportC "-lz"
gzclose(*zgFile)
EndImport
Debug gzclose(@dummy.i)
Re: zlib Import ist unvollständig
Verfasst: 06.02.2022 16:35
von Benubi
Also ich benutze nur die mit PB mitgelieferte lib auf Windows, 124KB groß. Ich möchte das Programm bzw. den Source möglichst monolithisch halten.
Die inflate und deflate Befehle gehen ja beispielsweise auch. Ich verstehe das leider nicht; so wie ich das sehe ist doch die ganze zlib in Ansi C und nicht in C++ geschrieben.
Re: zlib Import ist unvollständig
Verfasst: 06.02.2022 18:55
von ccode_new
Ach Mist!
Du verwendest PureBasic in der x86-Version.
Die "msvcrt.lib" im PureBasic-Verzeichnis (...\PureLibraries\Windows\Libraries) ist nicht aktuell.
Die Lib müsste neu kompiliert werden.
Hiermit dürftest du das Problem bis auf die "sichere-Version" von printf reduzieren können.
Code: Alles auswählen
ImportC "oldnames.lib"
EndImport
ImportC ""
_vsnprintf.i( *buffer.integer, count.i, format.p-utf8, *argptr ) ;nützt nichts!
EndImport
ImportC "zlib.lib"
gzclose(*zgFile)
EndImport
Debug gzclose(@dummy.i)
Re: zlib Import ist unvollständig
Verfasst: 08.02.2022 12:22
von Benubi
So nun habe ich keine Ahnung wie man diese msvcrt.lib kompiliert, ich habe eine von einer anderen Programmiersprache rüber-stibitzt und jetzt kompiliert es ohne Probleme; etwas Frankeisteinisch das Ganze, ich weiß nicht ob man das darf?
Dafür ist die msvcrt.lib jetzt von ca. 231kb auf 1.3mb angewachsen, aber die Executables sehen gleich groß aus und funktionieren. Der Import von der vsnprintf ist auch nicht mehr notwendig damit es funktioniert.
Re: zlib Import ist unvollständig
Verfasst: 08.02.2022 13:04
von ccode_new
Das ist doch schön.
Hätte ich auch so gemacht.
Und warum soll man das nicht dürfen?
Re: zlib Import ist unvollständig
Verfasst: 08.02.2022 18:31
von mk-soft
Kleiner Tipp:
Wenn mal wieder eine lib von PB nicht ganz passt, nehme ich diese von PellesC
