Ситуация: У меня есть много файлов ввода 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 хороших примеров (однако с обоими из них я проблема, описанной выше)
- http://www.codeguru.com/cpp/cpp/algorithms/compression/article.php/c11735
- http://bobobobo.wordpress.com/2008/02/23/how-to-use-zlib/
И я рассмотрел другие вопросы, такие как:
- Trying to compile program that uses zlib. Link unresolved error
- Skipping Incompatible Libraries at compile
Я также построить DLL сам в ВХ 2010, однако, все конфигурации проекта в источнике Zlib 1,26 предназначены для конфигурации с 32 бит. Поэтому, после создания dll, у меня такая же ошибка, как и выше.
Длинная история так краткий обзор моих вопросов:
- Есть ли что-то я делаю не так во время компиляции?
- Правильно ли, что я никогда не смогу использовать dll zlib1 при компиляции в 64 бит?
- И самое главное: могу ли я как-то скомпилировать 64-разрядную версию zlib (используя, например, эти инструкции http://msdn.microsoft.com/en-us/library/9yb4317s.aspx), или они уже доступны где-то (я не смог их найти до сих пор)?
Спасибо вам всем за ваше время!
Да, я пытаюсь это сейчас, к сожалению, это просто приводит к другой проблеме, как здесь: http://stackoverflow.com/questions/8044385/64-bit-build-on-microsoft-visual-c-express- 2010 Чтобы вернуться к моему вопросу, правильно, что я никогда не смогу использовать 32-разрядную dll zlib, если я не скомпилирую свой код и в 32-битной версии? – Martin
Хорошо, в конце все это работает, так что скажем, моя проблема решена :) – Martin