I just downloaded the new version 8.0.7 and I have problems during the link with Zlib.
The Zlib code is already included in my project, thus some symbols are already defined …
In JUCE 8.0.6, it seems that the Zlib code was inside a namespace called zlibNamespace, thus I had no problem.
There is an old post from Jules on this topic : Using alternative zlib - #2 by jules
Is there a good reason for this change ?
Of course, I can also put my Zlib in a namespace …
Please could you provide some more details, such as the exact text of the error you’re seeing? We still include zlib in a zlibNamespace in JUCE 8.0.7, but perhaps we are accidentally including some file outside of this namespace. In any case, it would be helpful to know which symbols are causing problems.
Thanks a lot @reuk
Here is the output of Visual Studio :
1>include_juce_core.obj : error LNK2005: zlibVersion already defined in zutil.obj
1>include_juce_core.obj : error LNK2005: deflate already defined in deflate.obj
1>include_juce_core.obj : error LNK2005: deflateEnd already defined in deflate.obj
1>include_juce_core.obj : error LNK2005: inflate already defined in inflate.obj
1>include_juce_core.obj : error LNK2005: inflateEnd already defined in inflate.obj
1>include_juce_core.obj : error LNK2005: deflateSetDictionary already defined in deflate.obj
1>include_juce_core.obj : error LNK2005: deflateGetDictionary already defined in deflate.obj
1>include_juce_core.obj : error LNK2005: deflateCopy already defined in deflate.obj
1>include_juce_core.obj : error LNK2005: deflateReset already defined in deflate.obj
1>include_juce_core.obj : error LNK2005: deflateParams already defined in deflate.obj
1>include_juce_core.obj : error LNK2005: deflateTune already defined in deflate.obj
1>include_juce_core.obj : error LNK2005: deflateBound already defined in deflate.obj
1>include_juce_core.obj : error LNK2005: deflatePending already defined in deflate.obj
1>include_juce_core.obj : error LNK2005: deflatePrime already defined in deflate.obj
1>include_juce_core.obj : error LNK2005: deflateSetHeader already defined in deflate.obj
1>include_juce_core.obj : error LNK2005: inflateSetDictionary already defined in inflate.obj
1>include_juce_core.obj : error LNK2005: inflateGetDictionary already defined in inflate.obj
1>include_juce_core.obj : error LNK2005: inflateSync already defined in inflate.obj
1>include_juce_core.obj : error LNK2005: inflateCopy already defined in inflate.obj
1>include_juce_core.obj : error LNK2005: inflateReset already defined in inflate.obj
1>include_juce_core.obj : error LNK2005: inflateReset2 already defined in inflate.obj
1>include_juce_core.obj : error LNK2005: inflatePrime already defined in inflate.obj
1>include_juce_core.obj : error LNK2005: inflateMark already defined in inflate.obj
1>include_juce_core.obj : error LNK2005: inflateGetHeader already defined in inflate.obj
1>include_juce_core.obj : error LNK2005: zlibCompileFlags already defined in zutil.obj
1>include_juce_core.obj : error LNK2005: compress already defined in compress.obj
1>include_juce_core.obj : error LNK2005: compress2 already defined in compress.obj
1>include_juce_core.obj : error LNK2005: compressBound already defined in compress.obj
1>include_juce_core.obj : error LNK2005: adler32 already defined in adler32.obj
1>include_juce_core.obj : error LNK2005: adler32_z already defined in adler32.obj
1>include_juce_core.obj : error LNK2005: crc32 already defined in crc32.obj
1>include_juce_core.obj : error LNK2005: crc32_z already defined in crc32.obj
1>include_juce_core.obj : error LNK2005: crc32_combine_op already defined in crc32.obj
1>include_juce_core.obj : error LNK2005: deflateInit_ already defined in deflate.obj
1>include_juce_core.obj : error LNK2005: inflateInit_ already defined in inflate.obj
1>include_juce_core.obj : error LNK2005: deflateInit2_ already defined in deflate.obj
1>include_juce_core.obj : error LNK2005: inflateInit2_ already defined in inflate.obj
1>include_juce_core.obj : error LNK2005: adler32_combine already defined in adler32.obj
1>include_juce_core.obj : error LNK2005: crc32_combine already defined in crc32.obj
1>include_juce_core.obj : error LNK2005: crc32_combine_gen already defined in crc32.obj
1>include_juce_core.obj : error LNK2005: zError already defined in zutil.obj
1>include_juce_core.obj : error LNK2005: inflateSyncPoint already defined in inflate.obj
1>include_juce_core.obj : error LNK2005: get_crc_table already defined in crc32.obj
1>include_juce_core.obj : error LNK2005: inflateUndermine already defined in inflate.obj
1>include_juce_core.obj : error LNK2005: inflateValidate already defined in inflate.obj
1>include_juce_core.obj : error LNK2005: inflateCodesUsed already defined in inflate.obj
1>include_juce_core.obj : error LNK2005: inflateResetKeep already defined in inflate.obj
1>include_juce_core.obj : error LNK2005: deflateResetKeep already defined in deflate.obj
I think I see the problem - the bundled zlib.h wraps all declarations with extern "C", which uses C-style symbol naming that omits the C++ namespace. In the previous bundled zlib, the extern "C" was commented out.