情况: 我有很多gzip压缩输入文件,我想在c程序中处理。我每次需要它时都可以提取它们但这需要花费很多时间,所以我想在内存提取中使用它。作为测试用例,我从http://zlib.net/下载了zlib源代码并尝试编译示例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
我认为是什么问题(我是从Skipping incompatible error when linking得到的)
我在64位代码编译时尝试链接32位dll。当我看http://zlib.net/zlib_faq.html#faq26时,据说zlib是在64位机器上测试的,但我想这意味着你仍然可以编译32位代码。请注意,我编译zpipe.c(在zlib源代码中提供),所以我确定包含都没问题。我把zlib1.dll放在编译目录中。
我做了什么/找到了什么: 其中我发现了两个很好的例子(但是我们都有上述问题)
我看了其他问题,例如:
我自己也在vc 2010中构建了一个dll,但是,zlib 1.26源代码中的所有项目配置都是针对32位配置的。所以在我构建一个dll后,我遇到了与上面相同的错误。
一个长篇故事,所以我的问题的快速摘要:
谢谢大家的时间!
答案 0 :(得分:0)
你绝对可以自己编译64位版本。在Visual Studio中打开DLL项目,进入配置管理器并为64位创建新配置。您链接的说明应该没问题。
如果您遇到此问题,还可以在应用程序中包含zlib的源代码,而不是链接到DLL。