2012-02-08 1 views
1

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

Проблема: Когда я компилирую 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 

То, что я думаю, что это проблема (я получил это от Skipping incompatible error when linking)

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

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

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

Я также построить DLL сам в ВХ 2010, однако, все конфигурации проекта в источнике Zlib 1,26 предназначены для конфигурации с 32 бит. Поэтому, после создания dll, у меня такая же ошибка, как и выше.

Длинная история так краткий обзор моих вопросов:

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

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

ответ

0

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

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

+0

Да, я пытаюсь это сейчас, к сожалению, это просто приводит к другой проблеме, как здесь: http://stackoverflow.com/questions/8044385/64-bit-build-on-microsoft-visual-c-express- 2010 Чтобы вернуться к моему вопросу, правильно, что я никогда не смогу использовать 32-разрядную dll zlib, если я не скомпилирую свой код и в 32-битной версии? – Martin

+0

Хорошо, в конце все это работает, так что скажем, моя проблема решена :) – Martin

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