4
votes

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..

1

1 Answers

1
votes

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