首页 > 解决方案 > 为什么使用 MSVC 编译器编译 zlib 可以正常工作,但使用 Cygwin 时会出现语法错误?

问题描述

我正在尝试在 cygwin 上编译zlib,但出现以下错误:

/usr/bin/windres: /cygdrive/d/zlib-1.2.11/win32/zlib1.rc:7: syntax error
make[3]: *** [CMakeFiles/zlib.dir/build.make:258: CMakeFiles/zlib.dir/win32/zlib1.obj] Error 1
make[2]: *** [CMakeFiles/Makefile2:109: CMakeFiles/zlib.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:116: CMakeFiles/zlib.dir/rule] Error 2
make: *** [Makefile:188: zlib] Error 2

请注意,该库使用 Visual Studio 编译器进行编译,并且该库的静态版本也可以使用 cygwin 进行编译。查看语法错误,我们有一个宏:


#ifdef GCC_WINDRES
VS_VERSION_INFO     VERSIONINFO
#else
VS_VERSION_INFO     VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE <----this line causes the syntax error
#endif
  FILEVERSION       ZLIB_VER_MAJOR,ZLIB_VER_MINOR,ZLIB_VER_REVISION,0
  PRODUCTVERSION    ZLIB_VER_MAJOR,ZLIB_VER_MINOR,ZLIB_VER_REVISION,0
  FILEFLAGSMASK     VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
  FILEFLAGS     1
#else
  FILEFLAGS     0
#endif

有人对编译这个库有什么建议吗?

标签: c++cmakezlib

解决方案


推荐阅读