Error LNK2001 bei Verwendung ZLIB, Debug-Modus geht, Release nicht



  • Hallo,
    ich drösele schon eine ganze Zeit an einem Linkerfehler herum, der sich nicht lösen läßt:

    Ich habe mir eine MFC-Applikation geschrieben, mit der ich Zip-Dateien erstellen und öffnen will.
    Dazu benutze ich die zLib 1.2.7. Diese will ich per DLL in meine Anwendung einbinden

    Die Library habe ich mir heruntergeladen und mit dem vorgegebenen Projekt unter VS2010 im Release-Modus kompiliert.
    Originellerweise wird im Debug-Modus in den Projekteinstellungen eine statische Library generiert. Das habe ich zwar nicht verstanden, jedoch mit dem Release-Modus weitergemacht. Mal sehen, was passiert.
    Im Release-Modus herausgekommen ist eine Importbiliothek zlibwapi.lib und die dazugehörige DLL zlibwapi.dll.

    Diese habe ich für den Debug-Modus in mein Projekt eingebunden mittels:
    C++ -> Allgemein -> zusätzliche Includeverzeichnisse: (Pfad zu den Headerdateien von zLib)
    Linker-> Allgemein -> zusätzliche Bibleothekverzeichnisse: (Pfad zu Importbibleothek)
    Linker -> Zusätzliche Abhängigkeiten : zlibwapi.lib

    Im Debug-Modus: alles gut, Zippen und Entzippen läuft wie Schnürchen 👍

    Mit den gleichen Einstellungen im Release Modus: 😞
    error LNK 2001: Nicht aufgelöstes externes Symbol: "_zipOpen" etc.
    fatal error LNK1120: fatal error: 15 nicht aufgelöste externe Verweise

    Ich habe einiges an den Einstellungen für den Release-Modus probiert.
    Nichts zu machen.
    So allmählich bin ich mit meinem kleinen Latein am Ende. 😕

    Würde mich freuen, wenn einer weiterhelfen kann.
    Ich hoffe es ist kein Schusseligkeitsfehler.

    Gruß


  • Mod

    Hast Du auch eine Release und eine Debug zlib?
    Schau mit Dumpbin in die lib.



  • Ich habe es gelöst:
    Nachdem ich mich mit DUMPBIN beschäftigt habe (kannte ich nicht, gut zu wissen) und ich daraufhin mir noch einmal das von der zLIB-Homepage heruntergeladene VS2010-Projekt wegen der Lib's genau angesehen habe, kam ich auf die (und jetzt wird es für mich peinlich) Idee mir die dazugehörige Readme nochmals genau durchzulesen.

    Dort stand es auch unter IMPORTANT: 😕
    "To use zlipwapi.dll in your application, you must define the macro ZLIB_WINAPI when compiling your application's source file"

    Dieses habe ich dann auch getan und siehe da es läuft auch im Release-Modus. 👍
    Warum es vorher im Debug-Modus lief, kann ich nicht sagen.

    Asche über mein Haupt. Wer richtig und genau lesen kann, ist eindeutig im Vorteil.
    Martin, Ich bedaure Deine Zeit in Anspruch genommen zu haben. 😉



  • Hallo,
    ich habe mir zlib 1.2.8 heruntergeladen, mit VS2012 die vc11-Version geöffnet und übersetzen lassen (nachdem ich SAFESEH auf NO gestellt habe), lib und dll wurden erstellt. Nachdem ich dieselben Probleme wie hinzman3 hatte, diese sich aber nicht mit dem Macro in Luft auflösten, habe ich mit dumpbin die erstellte dll untersucht, und siehe da: 0 number of functions.

    Was mache ich falsch, an der Umstellung auf (/SAFESEH:NO) kann es doch nicht liegen oder ? Sonst übersetzt das Ganze nicht mal.

    Gruß

    Edit: Hat sich erledigt, die .def Datei war kaputt, hab spasseshalber die vc10 Version konvertiert, da habe ich zwar einen Fehler in der def Datei bekommen

    .\zlibvc.def(4): fatal error LNK1118: Syntaxfehler in VERSION-Anweisung.

    Wenn man die Zeile mit der Version rausnimmt funktionierts aber. Hab mir dannach die VS2012 Version nochmal neu geladen, geht dort auch so.

    Gruß

    Gruß


Log in to reply