Reputation: 123
I am trying to use zlibstat.lib generated by building solution in zlib-1.2.8\contrib\vstudio\vc10\zlibvc.sln
It generated a zlibstat.lib but when I link it with another project I get the following errors:
error LNK2001: unresolved external symbol _compress2 error LNK2001: unresolved external symbol _uncompress error LNK2019: unresolved external symbol _compress2 referenced in function... error LNK2019: unresolved external symbol _crc32 referenced in function ....
I used dumpbin to dump list of symbols from this zlibstat.lib
x86:
00B 00000000 SECT4 notype () External | _uncompress@16 029 000024F0 SECT5 notype () Static | _compress_block 00B 00000000 SECT4 notype () External | _compress2@20 00F 000000C0 SECT4 notype () External | _compress@16 010 000000E0 SECT4 notype () External | _compressBound@4
x64:
00A 00000000 SECT4 notype () External | uncompress 00D 00000000 SECT5 notype Static | $pdata$uncompress 010 00000000 SECT6 notype Static | $unwind$uncompress 050 00002E50 SECT5 notype () Static | compress_block 051 000000B4 SECT6 notype Static | $pdata$compress_block 052 00000078 SECT7 notype Static | $unwind$compress_block 00A 00000000 SECT4 notype () External | compress2 00D 00000000 SECT5 notype Static | $pdata$compress2 010 00000000 SECT6 notype Static | $unwind$compress2 015 00000150 SECT4 notype () External | compress 016 0000000C SECT5 notype Static | $pdata$compress 017 00000008 SECT6 notype Static | $unwind$compress 019 000001A0 SECT4 notype () External | compressBound
If add the code of zlib to my project it works fine..
What am I doing wrong when trying to link it with library? I am using 64 bit machine and the configuration platform is win32.. I tried using x64 but didnt work..
Upvotes: 4
Views: 4024
Reputation: 1032
For anyone coming across this question: I have just solved this myself minutes ago and I personally think that this is a small error in the 1.2.8 sources. The 1.2.8 release contains a VS2010 project to build the zlibstat.lib and altough one would expect a static library file given the name, the macro ZLIB_WINAPI is defined which produces a dynamically linked lib file.
So without further ado: To compile zlibstat.lib in VS2010
:
Simply go to the project's proprerties, go to C/C++
->Preprocessor
and remove the ZLIB_WINAPI
macro from the Preprocessor Definitions
Upvotes: 1