我一直在尝试编译一个在VC++ 2010中使用zlib压缩的应用程序.
我明白了
error LNK2019: unresolved external symbol _inflateInit2_ referenced in function ...
Run Code Online (Sandbox Code Playgroud)
错误消息,如果我没有链接lib,这不会是不寻常的.我链接静态版本zlib库.
我已经设法让这些完全相同的libs和header配置在不同的解决方案中完美运行,因此这种行为非常出乎意料.
任何想法将不胜感激.
更新:链接器命令行
/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
更新2:详细链接器输出:
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 @__security_check_cookie@4
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)" (?terminate@@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 __imp__InterlockedExchange@8
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__Sleep@4
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__InterlockedCompareExchange@12
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__HeapSetInformation@16
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__EncodePointer@4
1> Referenced in MSVCRT.lib(crtexe.obj)
1> Referenced in MSVCRT.lib(atonexit.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__TerminateProcess@8
1> Referenced in MSVCRT.lib(gs_report.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__GetCurrentProcess@0
1> Referenced in MSVCRT.lib(gs_report.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__UnhandledExceptionFilter@4
1> Referenced in MSVCRT.lib(gs_report.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__SetUnhandledExceptionFilter@4
1> Referenced in MSVCRT.lib(gs_report.obj)
1> Referenced in MSVCRT.lib(unhandld.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__IsDebuggerPresent@0
1> Referenced in MSVCRT.lib(gs_report.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__DecodePointer@4
1> Referenced in MSVCRT.lib(atonexit.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__QueryPerformanceCounter@4
1> Referenced in MSVCRT.lib(gs_support.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__GetTickCount@0
1> Referenced in MSVCRT.lib(gs_support.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__GetCurrentThreadId@0
1> Referenced in MSVCRT.lib(gs_support.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__GetCurrentProcessId@0
1> Referenced in MSVCRT.lib(gs_support.obj)
1> Loaded kernel32.lib(KERNEL32.dll)
1> Found __imp__GetSystemTimeAsFileTime@4
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_
Run Code Online (Sandbox Code Playgroud)
就我而言,我修改了
读书ucrt.lib;vcruntime.lib;msvcrt.lib;kernel32.lib
这使得 libz 能够在 Windows 10 下使用 VS2015 进行构建
确保构建类型为 /MD
如果构建 libpng(需要 zlib),情况也是如此,相同的修改可以使用旧的默认“项目”文件成功构建。
您是否验证了您的 zlib 函数原型位于一个extern "C"块中?如果不是,则链接器将查找具有 C++ 损坏名称的函数,而 zlib.lib 将包含未损坏的 C 名称。
| 归档时间: |
|
| 查看次数: |
36415 次 |
| 最近记录: |