Библиотека zlib. Приходит в проект уже собранная, в виде .lib в статике.
Библиотека libarchive. Приходит в проект в исходниках, собираем ее сами, в статике. Линкуется с zlib.
Библиотека libpng. Приходит в проект в исходниках, собираем ее сами, в статике. Линкуется с zlib.
Далее:
Проект собирает экзешник. Если он линкуется только с zlib и с libarchive, то вылазит ошибка
archive_static.lib(archive_read_support_format_7zip.obj) : error LNK2019: unresolved external symbol __imp_inflate referenced in function decompress
Я даже знаю как ее устранить — достаточно определить переменную ZLIB_WINAPI при сборке libarchive, чтобы проставились корректные calling conventions.
Однако, вместо этого, экзешнику достаточно слинковаться с libpng, и тогда проблема линковки исчезает! Экзешник корректно генерируется и работает.
Вопрос:
Какого?? Почему это работает?
Ведь zlib одна и та же. Почему добавление в линковку соседнего проекта с zlib внезапно решает проблему с линковкой, тогда как просто добавление zlib не помогает? Как соседний проект чудесным образом лечит неправильные calling conventions??
P.S. Происходит на MSVC2015 и cmake 2.30. Причем на более старых cmake собирается нормально, даже без выставления ZLIB_WINAPI.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re: Подскажите по линковке: почему это... линкуется!
Здравствуйте, Basil2, Вы писали:
B>error LNK2019: unresolved external symbol __imp_inflate referenced in function decompress
по сабжу же: эта ошибка говорит о том, что `archive_static.lib` почему-то ожидает символ `__imp_inflate` из библиотеки импорта для dll, а не из статической либы.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[2]: Подскажите по линковке: почему это... линкуется!
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Сколько Вы видели статических библиотек, которые можно подключить к своему проекту и собрать с /nodefaultlib, не указывая явно никаких других .lib?
как это относится к моему вопросу?
и, что общего у "этого" и моего вопроса?
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[6]: Подскажите по линковке: почему это... линкуется!
Здравствуйте, niXman, Вы писали:
X>как это относится к моему вопросу? X>и, что общего у "этого" и моего вопроса?
Это ответ-намек на вопрос "зачем? в чем смысл?" (который был репликой на "зависимостях статической либы вполне допустимо указывать другие статические либы").