2013-04-20 4 views
0

Я пытаюсь использовать функции zlib во время работы с библиотекой poco C++. Связывание с библиотекой zlib напрямую не работает, потому что poco ссылается на нее, и я получаю несколько дубликатов при связывании. Поэтому я удалил zlib.lib из списка моих библиотек и использовал только версию poco.Poco/zlib: ошибка LNK2019 нерешенный внешний «_gzopen»

Поскольку zlib.h является частью Poco, компиляции работает отлично, но связь в настоящее время приводит к следующей ошибке

error LNK2019 unresolved external "_gzopen" 

Так что я могу переключаться между duplicate и unresolved. Кто может мне помочь?

ответ

1

В окне, определяющем ZLIB_DLL, необходимо принудительно экспортировать собственный интерфейс zlib. Необязательно, Poco InflatingStream и DeflatingStream обертывание функции zlib. Слово предупреждения: это производные потоки std, и может быть штраф за производительность.

+0

Когда следует использовать ZLIB_DLL? При компиляции Poco или компиляции моего проекта? И ... Я не хочу иметь zlib.dll, я хочу, чтобы мои статические библиотеки Poco отображали функции zlib ... – heinob

+0

Хорошо, я посмотрел на нее немного глубже - [gzlib.c] (https: // github.com/pocoproject/poco/blob/develop/Foundation/src/gzlib.c) (где [gzopen] (https://github.com/pocoproject/poco/blob/develop/Foundation/src/gzlib.c# L262)) распространяется с POCO, но фактически не включен в проект Foundation, поэтому вы видите ошибку ссылки. Чтобы избежать изменений в проекте POCO VS, лучше всего включить gzlib.c из дистрибутива POCO в ваше приложение, и оно должно быть разрешено; Я попытался включить gzlib.c и вызвал gzopen из примера приложения Foundation, и он отлично связывается. – Alex

Смежные вопросы