Пропуск несовместимых ZLIB DLL - PullRequest
1 голос
/ 09 февраля 2012

Ситуация: У меня есть много сжатых входных файлов, которые я хочу обработать в программе переменного тока.Я могу извлекать каждый из них каждый раз, когда мне это нужно, но это занимает много времени, поэтому я хотел бы использовать для извлечения памяти.В качестве тестового примера я скачал исходники zlib из http://zlib.net/ и попытался скомпилировать пример zpipe.c

Проблема: Когда я компилирую zpipe.c, используя:

x86_64-w64-mingw32-gcc -Wall -O3 zpipe.c -o zpipe -L. -lzlib1

Я получаю сообщение об ошибке:

x86_64-w64-mingw32/bin/ld.exe: skipping incompatible ./zlib1.dll when searching for -lzlib1

x86_64-w64-mingw32/4.5.4/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lzlib1

В чем проблема, по-моему, (Я получил это от Пропуск несовместимой ошибки при связывании )

Я пытаюсь связать 32-битную DLL, пока я компилирую в 64-битном коде.Когда я смотрю на http://zlib.net/zlib_faq.html#faq26, говорят, что zlib тестируется на 64-битных машинах, но я предполагаю, что это означает, что вы все еще компилируете 32-битный код.Обратите внимание, что я компилирую zpipe.c (предоставленный в исходном коде zlib), так что я уверен, что все включения в порядке.Я положил zlib1.dll в каталог компиляции.

Что я сделал / нашел: Среди других я нашел 2 хороших примера (однако с обоими из них у меня есть проблема, описанная выше)

И я посмотрел на другие вопросы, такие как:

Я также создаю dll самостоятельно в vc 2010, однако все конфигурации проекта в zlib1,26 источника для 32-битной конфигурации.Поэтому после того, как я собрал dll, у меня та же ошибка, что и выше.

Длинная история, так что краткое резюме моих вопросов :

  1. Есть что-тоЯ делаю неправильно во время компиляции?
  2. Правильно ли, что я никогда не смогу использовать dll zlib1 при компиляции в 64-битной версии?
  3. И самое важное: могу ли я как-нибудь скомпилировать 64-битную версию?саму версию zlib (используя, например, эти http://msdn.microsoft.com/en-us/library/9yb4317s.aspx инструкции), или они где-то уже доступны (я не смог найти их до сих пор)?

Спасибо всем за вашевремя!

1 Ответ

0 голосов
/ 09 февраля 2012

Вы можете определенно самостоятельно скомпилировать 64-битную версию.Откройте свой DLL-проект в Visual Studio, зайдите в диспетчер конфигурации и создайте новую конфигурацию для 64-битной системы.Связанные с вами инструкции должны быть в порядке.

Если у вас возникли проблемы с этим, вы также можете включить источник zlib в свое приложение вместо ссылки на DLL.

...