Поскольку мне нужно связать со статическими средами выполнения C, я решил создать все как статические библиотеки, о которых идет речь, с той же версией Visual Studio (2013), используя тот же набор инструментов платформы и библиотеки времени выполнения Multi-Threaded / MT
Я пытаюсь привязать свое приложение к стороннему игровому движку. Этот движок построен на основе libpng и zlib. libpng также построен на основе zlib.
Поэтому я создаю zlib с нуля в статическую библиотеку. Затем я создаю libpng и указываю его на zlib в качестве дополнительной зависимости, чтобы zlib был связан с моей статической библиотекой libpng.
Затем я создаю свой игровой движок, связывающийся как с libpng, так и с zlib в качестве дополнительных зависимостей. Компоновщик удаляет второе определение zlib. Пока все строится нормально.
Затем я связываю свое приложение только со статической библиотекой своего игрового движка. Я получаю такие ошибки компоновщика:
2>libOxygine-vc120-mt-gd.lib(unzip.obj) : error LNK2001: unresolved external symbol _inflate
2>libOxygine-vc120-mt-gd.lib(pngrutil.obj) : error LNK2001: unresolved external symbol _inflate
2>libOxygine-vc120-mt-gd.lib(unzip.obj) : error LNK2001: unresolved external symbol _inflateEnd
2>libOxygine-vc120-mt-gd.lib(pngread.obj) : error LNK2001: unresolved external symbol _inflateEnd
2>libOxygine-vc120-mt-gd.lib(unzip.obj) : error LNK2001: unresolved external symbol _crc32
2>libOxygine-vc120-mt-gd.lib(png.obj) : error LNK2001: unresolved external symbol _crc32
2>libOxygine-vc120-mt-gd.lib(unzip.obj) : error LNK2001: unresolved external symbol _inflateInit2_
2>libOxygine-vc120-mt-gd.lib(png.obj) : error LNK2001: unresolved external symbol _adler32
2>libOxygine-vc120-mt-gd.lib(png.obj) : error LNK2001: unresolved external symbol _inflateReset
2>libOxygine-vc120-mt-gd.lib(pngrutil.obj) : error LNK2001: unresolved external symbol _inflateInit_
2>libOxygine-vc120-mt-gd.lib(pngwrite.obj) : error LNK2001: unresolved external symbol _deflateEnd
2>libOxygine-vc120-mt-gd.lib(pngwutil.obj) : error LNK2001: unresolved external symbol _deflateReset
2>libOxygine-vc120-mt-gd.lib(pngwutil.obj) : error LNK2001: unresolved external symbol _deflateInit2_
2>libOxygine-vc120-mt-gd.lib(pngwutil.obj) : error LNK2001: unresolved external symbol _deflate
Кажется, возникла проблема с поиском zlib, но он был связан с libpng, который, в свою очередь, был связан с игровой библиотекой libOxygine.
Само мое приложение не зависит напрямую как от zlib, так и от libpng, поэтому я действительно не хочу связывать их напрямую из моего приложения, так как обо всем этом следует позаботиться в моей библиотеке игрового движка libOxygine.
Спасибо