webentwicklung-frage-antwort-db.com.de

Nicht aufgelöste externe Elemente trotz Verknüpfung in zlib.lib

Ich habe versucht, eine Anwendung zu kompilieren, die die Zlib-Komprimierung in VC++ 2010 verwendet. 

Ich bekomme die

error LNK2019: unresolved external symbol _inflateInit2_ referenced in function ...

fehlermeldung, die nicht ungewöhnlich wäre, wenn ich die lib nicht verlinke. Ich verlinke die statische Zlib-Bibliothek. 

Ich habe es geschafft, dass genau dieselbe Konfiguration von Bibliotheken und Kopfzeilen in verschiedenen Lösungen einwandfrei funktioniert. Daher ist dieses Verhalten äußerst unerwartet.

Irgendwelche Ideen werden geschätzt.

UPDATE: Linker-Befehlszeile 

/OUT:"C:\Documents and Settings\Suthke\My Documents\Visual Studio 2010\Projects\SBRapGen2\Debug\SBRapGen2.exe" /INCREMENTAL /NOLOGO "zlib.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "Shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /MANIFEST /ManifestFile:"Debug\SBRapGen2.exe.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\Documents and Settings\Suthke\My Documents\Visual Studio 2010\Projects\SBRapGen2\Debug\SBRapGen2.pdb" /SUBSYSTEM:CONSOLE /PGD:"C:\Documents and Settings\Suthke\My Documents\Visual Studio 2010\Projects\SBRapGen2\Debug\SBRapGen2.pgd" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE

UPDATE 2: Verbose Linker-Ausgabe:

1>------ Build started: Project: SBRapGen2, Configuration: Release Win32 ------
1>  
1>  Starting pass 1
1>  Processed /DEFAULTLIB:uuid.lib
1>  Processed /DEFAULTLIB:msvcprt
1>  Processed /DEFAULTLIB:zlib.lib
1>  Processed /DEFAULTLIB:MSVCRT
1>  Processed /DEFAULTLIB:OLDNAMES
1>  
1>  Searching libraries
1>      Searching C:\Program Files\Microsoft Visual Studio 10.0\VC\lib\zlib.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\kernel32.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\user32.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\gdi32.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\winspool.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\comdlg32.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\advapi32.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\Shell32.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\ole32.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\oleaut32.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\uuid.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\odbc32.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\odbccp32.lib:
1>      Searching C:\Program Files\Microsoft Visual Studio 10.0\VC\lib\msvcprt.lib:
1>      Searching C:\Program Files\Microsoft Visual Studio 10.0\VC\lib\MSVCRT.lib:
1>        Found @[email protected]
1>          Referenced in SBRapGen2.obj
1>          Loaded MSVCRT.lib(secchk.obj)
1>        Found __imp__sprintf
1>          Referenced in SBRapGen2.obj
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __imp__ceil
1>          Referenced in SBRapGen2.obj
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __imp__free
1>          Referenced in SBRapGen2.obj
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __imp__malloc
1>          Referenced in SBRapGen2.obj
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __imp__printf
1>          Referenced in SBRapGen2.obj
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __imp__fopen
1>          Referenced in SBRapGen2.obj
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __imp__fread
1>          Referenced in SBRapGen2.obj
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __imp__fwrite
1>          Referenced in SBRapGen2.obj
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __imp__ftell
1>          Referenced in SBRapGen2.obj
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __imp__fseek
1>          Referenced in SBRapGen2.obj
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __imp__fclose
1>          Referenced in SBRapGen2.obj
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found _mainCRTStartup
1>          Loaded MSVCRT.lib(crtexe.obj)
1>        Found ___report_gsfailure
1>          Referenced in MSVCRT.lib(secchk.obj)
1>          Loaded MSVCRT.lib(gs_report.obj)
1>        Found ___security_cookie
1>          Referenced in MSVCRT.lib(secchk.obj)
1>          Referenced in MSVCRT.lib(gs_report.obj)
1>          Loaded MSVCRT.lib(gs_cookie.obj)
1>        Found __IMPORT_DESCRIPTOR_MSVCR100
1>          Referenced in MSVCRT.lib(MSVCR100.dll)
1>          Referenced in MSVCRT.lib(MSVCR100.dll)
1>          Referenced in MSVCRT.lib(MSVCR100.dll)
1>          Referenced in MSVCRT.lib(MSVCR100.dll)
1>          Referenced in MSVCRT.lib(MSVCR100.dll)
1>          Referenced in MSVCRT.lib(MSVCR100.dll)
1>          Referenced in MSVCRT.lib(MSVCR100.dll)
1>          Referenced in MSVCRT.lib(MSVCR100.dll)
1>          Referenced in MSVCRT.lib(MSVCR100.dll)
1>          Referenced in MSVCRT.lib(MSVCR100.dll)
1>          Referenced in MSVCRT.lib(MSVCR100.dll)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found ___CxxSetUnhandledExceptionFilter
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(unhandld.obj)
1>        Found __amsg_exit
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __imp____getmainargs
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __dowildcard
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(wildcard.obj)
1>        Found __newmode
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(_newmode.obj)
1>        Found _atexit
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(atonexit.obj)
1>        Found __RTC_Terminate
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(_initsect_.obj)
1>        Found __imp___cexit
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __imp___exit
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __XcptFilter
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __imp__exit
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __imp____initenv
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __IsNonwritableInCurrentImage
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(pesect.obj)
1>        Found __initterm
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found ___xc_a
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(cinitexe.obj)
1>  Processed /DEFAULTLIB:kernel32.lib
1>   Processed /DISALLOWLIB:libcmt.lib
1>   Processed /DISALLOWLIB:libcmtd.lib
1>   Processed /DISALLOWLIB:msvcrtd.lib
1>        Found __initterm_e
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found ___native_startup_state
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(natstart.obj)
1>        Found __SEH_epilog4
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Referenced in MSVCRT.lib(atonexit.obj)
1>          Loaded MSVCRT.lib(sehprolg4.obj)
1>        Found __except_handler4
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Referenced in MSVCRT.lib(atonexit.obj)
1>          Referenced in MSVCRT.lib(pesect.obj)
1>          Referenced in MSVCRT.lib(sehprolg4.obj)
1>          Loaded MSVCRT.lib(chandler4gs.obj)
1>        Found __imp___configthreadlocale
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found ___globallocalestatus
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(xthdloc.obj)
1>        Found __setdefaultprecision
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(fp8.obj)
1>        Found __imp____setusermatherr
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __matherr
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(merr.obj)
1>        Found __setargv
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(dllargv.obj)
1>        Found __commode
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(xncommod.obj)
1>        Found __imp___commode
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __imp___fmode
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __fmode
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(xtxtmode.obj)
1>        Found __imp____set_app_type
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found ___security_init_cookie
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded MSVCRT.lib(gs_support.obj)
1>        Found __crt_debugger_hook
1>          Referenced in MSVCRT.lib(gs_report.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __NULL_IMPORT_DESCRIPTOR
1>          Referenced in MSVCRT.lib(MSVCR100.dll)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found MSVCR100_NULL_THUNK_DATA
1>          Referenced in MSVCRT.lib(MSVCR100.dll)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found "void __cdecl terminate(void)" ([email protected]@YAXXZ)
1>          Referenced in MSVCRT.lib(unhandld.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __unlock
1>          Referenced in MSVCRT.lib(atonexit.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found ___dllonexit
1>          Referenced in MSVCRT.lib(atonexit.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __lock
1>          Referenced in MSVCRT.lib(atonexit.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __imp___onexit
1>          Referenced in MSVCRT.lib(atonexit.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __except_handler4_common
1>          Referenced in MSVCRT.lib(chandler4gs.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __invoke_watson
1>          Referenced in MSVCRT.lib(fp8.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>        Found __controlfp_s
1>          Referenced in MSVCRT.lib(fp8.obj)
1>          Loaded MSVCRT.lib(MSVCR100.dll)
1>      Searching C:\Program Files\Microsoft Visual Studio 10.0\VC\lib\OLDNAMES.lib:
1>      Searching C:\Program Files\Microsoft Visual Studio 10.0\VC\lib\zlib.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\kernel32.lib:
1>        Found [email protected]
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded kernel32.lib(KERNEL32.dll)
1>        Found [email protected]
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded kernel32.lib(KERNEL32.dll)
1>        Found [email protected]
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded kernel32.lib(KERNEL32.dll)
1>        Found [email protected]
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Loaded kernel32.lib(KERNEL32.dll)
1>        Found [email protected]
1>          Referenced in MSVCRT.lib(crtexe.obj)
1>          Referenced in MSVCRT.lib(atonexit.obj)
1>          Loaded kernel32.lib(KERNEL32.dll)
1>        Found [email protected]
1>          Referenced in MSVCRT.lib(gs_report.obj)
1>          Loaded kernel32.lib(KERNEL32.dll)
1>        Found [email protected]
1>          Referenced in MSVCRT.lib(gs_report.obj)
1>          Loaded kernel32.lib(KERNEL32.dll)
1>        Found [email protected]
1>          Referenced in MSVCRT.lib(gs_report.obj)
1>          Loaded kernel32.lib(KERNEL32.dll)
1>        Found [email protected]
1>          Referenced in MSVCRT.lib(gs_report.obj)
1>          Referenced in MSVCRT.lib(unhandld.obj)
1>          Loaded kernel32.lib(KERNEL32.dll)
1>        Found [email protected]
1>          Referenced in MSVCRT.lib(gs_report.obj)
1>          Loaded kernel32.lib(KERNEL32.dll)
1>        Found [email protected]
1>          Referenced in MSVCRT.lib(atonexit.obj)
1>          Loaded kernel32.lib(KERNEL32.dll)
1>        Found [email protected]
1>          Referenced in MSVCRT.lib(gs_support.obj)
1>          Loaded kernel32.lib(KERNEL32.dll)
1>        Found [email protected]
1>          Referenced in MSVCRT.lib(gs_support.obj)
1>          Loaded kernel32.lib(KERNEL32.dll)
1>        Found [email protected]
1>          Referenced in MSVCRT.lib(gs_support.obj)
1>          Loaded kernel32.lib(KERNEL32.dll)
1>        Found [email protected]
1>          Referenced in MSVCRT.lib(gs_support.obj)
1>          Loaded kernel32.lib(KERNEL32.dll)
1>        Found [email protected]
1>          Referenced in MSVCRT.lib(gs_support.obj)
1>          Loaded kernel32.lib(KERNEL32.dll)
1>        Found __IMPORT_DESCRIPTOR_KERNEL32
1>          Referenced in kernel32.lib(KERNEL32.dll)
1>          Referenced in kernel32.lib(KERNEL32.dll)
1>          Referenced in kernel32.lib(KERNEL32.dll)
1>          Referenced in kernel32.lib(KERNEL32.dll)
1>          Referenced in kernel32.lib(KERNEL32.dll)
1>          Referenced in kernel32.lib(KERNEL32.dll)
1>          Referenced in kernel32.lib(KERNEL32.dll)
1>          Referenced in kernel32.lib(KERNEL32.dll)
1>          Referenced in kernel32.lib(KERNEL32.dll)
1>          Referenced in kernel32.lib(KERNEL32.dll)
1>          Referenced in kernel32.lib(KERNEL32.dll)
1>          Referenced in kernel32.lib(KERNEL32.dll)
1>          Referenced in kernel32.lib(KERNEL32.dll)
1>          Referenced in kernel32.lib(KERNEL32.dll)
1>          Referenced in kernel32.lib(KERNEL32.dll)
1>          Referenced in kernel32.lib(KERNEL32.dll)
1>          Loaded kernel32.lib(KERNEL32.dll)
1>        Found KERNEL32_NULL_THUNK_DATA
1>          Referenced in kernel32.lib(KERNEL32.dll)
1>          Loaded kernel32.lib(KERNEL32.dll)
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\user32.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\gdi32.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\winspool.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\comdlg32.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\advapi32.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\Shell32.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\ole32.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\oleaut32.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\uuid.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\odbc32.lib:
1>      Searching C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib\odbccp32.lib:
1>      Searching C:\Program Files\Microsoft Visual Studio 10.0\VC\lib\msvcprt.lib:
1>      Searching C:\Program Files\Microsoft Visual Studio 10.0\VC\lib\MSVCRT.lib:
1>      Searching C:\Program Files\Microsoft Visual Studio 10.0\VC\lib\OLDNAMES.lib:
1>      Searching C:\Program Files\Microsoft Visual Studio 10.0\VC\lib\zlib.lib:
1>  
1>  Finished searching libraries
1>  
1>  Finished pass 1
1>  
1>SBRapGen2.obj : error LNK2001: unresolved external symbol _deflateEnd
1>SBRapGen2.obj : error LNK2001: unresolved external symbol _inflateInit2_
1>SBRapGen2.obj : error LNK2001: unresolved external symbol _inflate
1>SBRapGen2.obj : error LNK2001: unresolved external symbol _inflateEnd
1>SBRapGen2.obj : error LNK2001: unresolved external symbol _deflate
1>SBRapGen2.obj : error LNK2001: unresolved external symbol _deflateInit2_
28
RSuthke

Wenn Sie die in contrib/VS bereitgestellte Lösung VS2010 verwenden, beachten Sie, dass sie fehlerbehaftet ist. Das zlibstat-Projekt definiert ZLIB_WINAPI, mit dem gemäß zlib FAQ die STDCALL-Konvention aktiviert wird. Entfernen Sie es einfach aus den Projekteinstellungen und kompilieren Sie die Bibliothek erneut.

75
Hook

Fand diesen Link für mich hilfreich. Lief wie am Schnürchen:

http://www.tannerhelland.com/5076/compile-zlib-winapi-wapi-stdcall/

4
Dula

In meinem Fall habe ich geändert

  • Config -> Linker -> Eingabe -> Zusätzliche Abhängigkeiten

ucrt.lib;vcruntime.lib;msvcrt.lib;kernel32.lib lesen

Dadurch konnte libz unter Windows 10 mit VS2015 bauen

Es wurde sichergestellt, dass der Build-Typ/MD war

Dies war auch der Fall, wenn für libpng (das erfordert zlib) die gleichen Änderungen erforderlich sind, um das erfolgreiche Erstellen mit den alten enthaltenen Standardprojektdateien zu ermöglichen. 

3
twobob

Ich bin selbst mit Visual Studio 2017 auf dasselbe Problem gestoßen. Ich habe Fehlermeldungen wie:

error LNK2019: unresolved external symbol __imp__deflate referenced in function 
error LNK2019: unresolved external symbol __imp__deflateEnd referenced in function 
error LNK2019: unresolved external symbol __imp__inflate referenced in function 
error LNK2019: unresolved external symbol __imp__inflateEnd referenced in function 
error LNK2019: unresolved external symbol __imp__deflateInit2_ referenced in function
error LNK2019: unresolved external symbol __imp__inflateInit2_ referenced in function

Ich folgte dem Tipp von Michael Burr und überprüfte, ob die Zlib-Datei, die ich hatte, diese Methoden enthielt:

dumpbin /symbols zlib.lib

Die Ausgabe zeigte die Methoden waren dort, aber Visual Studio beschwerte sich immer noch. Letztendlich habe ich die neueste stabile Version von zlib von ihrem Github-Repository heruntergeladen und dann kompiliert (mit einer Visual Studio Developer Console). Ihre Anweisungen waren nicht direkt hilfreich, obwohl ich schließlich ihr MS Makefile fand, das den Befehl enthielt, den ich ausführen musste.

nmake -f win32/Makefile.msc

In der Datei win32/Makefile.msc finden Sie weitere Informationen zum Bauprozess.

Der Erstellungsprozess erzeugte zwei LIB-Dateien. Was ich in meinem Projekt wirklich brauchte, war 'zdll.lib'. (Informationen dazu finden Sie in der Dokumentationsdatei DLL_FAQ.txt.) Zurück in Visual Studio musste ich die Datei manuell zu meinem Projekt hinzufügen (NICHT mit der Linker --> General --> Additional Library Directories-Methode, da dies die anderen Probleme auslöste. Sie können sie durch Rechtsklick hinzufügen auf dem Lösungsobjekt (nicht das oberste Element in der Liste, sondern das zweite Element. In der Abbildung unten heißt mein Projekt Lasso, Sie möchten also auf das entsprechende Element in Ihrem Projekt klicken.)

Gehe zu: Hinzufügen -> Vorhandener Artikel ...

Wählen Sie dann die generierte zdll.lib-Datei aus.

Lib-Dateien explizit zum Visual Studio-Projekt hinzugefügt

0
C.D.

Sie haben die statische Bibliothek von zlib mit etwas anderem als VC++ 2010 kompiliert?

Ist dies ein aktuelles Upgrade von VS2008/05?

Haben Sie versucht, die statische Bibliothek mit dem Toolset 2010 neu zu kompilieren?

0
J T

Ich fand, dass es in Win32 Build OK aber nicht x64 verknüpft wurde.

0
Toby Sharp

Ein paar Vorschläge, die Sie im Dunkeln suchen:

Führen Sie dumpbin /symbols zlib.lib aus, um zu sehen, ob die Symbole in dieser Bibliothek Ihren Erwartungen entsprechen (dh, ist inflateInit2 dort?).

Wenn der Build derzeit auf einer lib-Pfadsuche basiert, um zlib.lib zu suchen, geben Sie den vollständigen absoluten Pfad der Bibliothek an, um auszuschließen, dass der Linker eine veraltete zlib-Bibliothek an einer anderen Stelle auf Ihrem System findet.

Buchen Sie auch die für den Linker verwendete Befehlszeile (aus der Buildprotokolldatei).

Aktualisieren:

Sie sehen ein solches Verhalten, wenn Sie versehentlich 32-Bit- und 64-Bit-Komponenten mischen (dh die zlib.lib-Datei wurde für x86 erstellt und die Anwendung wird für x64 erstellt). Der Linker beschwert sich nicht darüber, dass er die lib-Datei nicht gefunden hat, und er beschwert sich auch nicht, dass die Objekte in der lib-Datei für eine andere Plattform bestimmt sind. Da in Ihrer Fehlermeldung ein Symbol ohne Verzierung erwähnt wird, würde ich darauf wetten, dass der Linker eine x64-Anwendung erstellt. Möglicherweise enthält die zlib.lib jedoch x86-Objekte (und daher befindet sich dort ein Symbol mit dem Namen _inflateInit2), das mit einem Unterstrich oder mit einem Unterstrich versehen ist vielleicht etwas anderes).

(Nebenbei gesagt - ich frage mich, ob es möglich ist, x86- und x64-Objekte in derselben lib-Datei zu mischen, solange sie unterschiedliche Namen haben. Nicht, dass ich das tatsächlich tun möchte.

0
Michael Burr

in meinem Fall installiere zlib-vc140-static-64 (v1.2.11) oder zlib_native (v1.2.11) mit NuGet innerhalb von vs2017.

0
sailfish009

Beachten Sie, dass die Reihenfolge der Bibliotheken von Bedeutung ist. Angenommen, Sie möchten A.OBJ, B.LIB und C.LIB mit den in dieser Reihenfolge angegebenen Eingabedateien verknüpfen. Wenn C.LIB eine Funktion in B.LIB aufruft, wird sie nicht gefunden (es sei denn, sie wurde bereits zufällig von A.OBJ aufgerufen).
Könnte dies die Ursache Ihres Problems sein?

0
TonyK

Haben Sie überprüft, dass sich Ihre Prototypen der Zlib-Funktion in einem extern "C"-Block befinden? Wenn nicht, sucht der Linker nach Funktionen mit C++ - manipulierten Namen, während zlib.lib die unveränderten C-Namen enthält.

0
Josh Kelley