c++ - 为 cygwin 编译 Poco 源时出错

标签 c++ cygwin poco

我下载了适用于 Windows 的 poco-1.6-all,我正在尝试为 cygwin 构建它,我在执行 make install 后收到此错误我需要一些帮助,因为我不知道如何解决此 NTDDI_VERSION 错误:

$ make install
make -C /cygdrive/c/poco-1.6.0-all/Foundation
make[1]: Entering directory '/cygdrive/c/poco-1.6.0-all/Foundation'
mkdir -p /cygdrive/c/poco-1.6.0-all/Foundation/obj/CYGWIN/x86_64/release_static
mkdir -p /cygdrive/c/poco-1.6.0-all/Foundation/obj/CYGWIN/x86_64/debug_static
mkdir -p /cygdrive/c/poco-1.6.0-all/Foundation/obj/CYGWIN/x86_64/release_shared
mkdir -p /cygdrive/c/poco-1.6.0-all/Foundation/obj/CYGWIN/x86_64/debug_shared
** Compiling src/ArchiveStrategy.cpp (debug, shared)
g++  -Iinclude -I/cygdrive/c/poco-1.6.0-all/CppUnit/include -I/cygdrive/c/poco-1.6.0-all/CppUnit/WinTestRunner/include -I/cygdrive/c/poco-1.6.0-all/Foundation/include -I/cygdrive/c/poco-1.6.0-all/XML/include -I/cygdrive/c/poco-1.6.0-all/JSON/include -I/cygdrive/c/poco-1.6.0-all/Util/include -I/cygdrive/c/poco-1.6.0-all/Net/include -I/cygdrive/c/poco-1.6.0-all/Crypto/include -I/cygdrive/c/poco-1.6.0-all/NetSSL_OpenSSL/include -I/cygdrive/c/poco-1.6.0-all/Data/include -I/cygdrive/c/poco-1.6.0-all/Data/SQLite/include -I/cygdrive/c/poco-1.6.0-all/Data/ODBC/include -I/cygdrive/c/poco-1.6.0-all/Data/MySQL/include -I/cygdrive/c/poco-1.6.0-all/MongoDB/include -I/cygdrive/c/poco-1.6.0-all/Zip/include -I/cygdrive/c/poco-1.6.0-all/PageCompiler/include -I/cygdrive/c/poco-1.6.0-all/PageCompiler/File2Page/include -DPOCO_NO_FPENVIRONMENT -DPOCO_NO_WSTRING -DPOCO_NO_SHAREDMEMORY -DPOCO_BUILD_HOST=PB00YCT7  -D_XOPEN_SOURCE=500  -g -D_DEBUG  -c src/ArchiveStrategy.cpp -o /cygdrive/c/poco-1.6.0-all/Foundation/obj/CYGWIN/x86_64/debug_shared/ArchiveStrategy.o
In file included from c:\mingw\include\_mingw.h:35:0,
                 from c:\mingw\include\windows.h:28,
                 from include/Poco/UnWindows.h:90,
                 from include/Poco/Platform_WIN32.h:24,
                 from include/Poco/Foundation.h:102,
                 from include/Poco/ArchiveStrategy.h:23,
                 from src/ArchiveStrategy.cpp:17:
c:\mingw\include\sdkddkver.h:137:8: error: #error The _WIN32_WINNT value does not match NTDDI_VERSION
 #      error The _WIN32_WINNT value does not match NTDDI_VERSION
        ^
In file included from include/Poco/ArchiveStrategy.h:23:0,
                 from src/ArchiveStrategy.cpp:17:
include/Poco/Foundation.h:122:4: error: #error POCO_WIN32_UTF8 and POCO_NO_WSTRING are mutually exclusive.
   #error POCO_WIN32_UTF8 and POCO_NO_WSTRING are mutually exclusive.
    ^
/cygdrive/c/poco-1.6.0-all/build/rules/compile:53: recipe for target '/cygdrive/c/poco-1.6.0-all/Foundation/obj/CYGWIN/x86_64/debug_shared/ArchiveStrategy.o' failed
make[1]: *** [/cygdrive/c/poco-1.6.0-all/Foundation/obj/CYGWIN/x86_64/debug_shared/ArchiveStrategy.o] Error 1
make[1]: Leaving directory '/cygdrive/c/poco-1.6.0-all/Foundation'
Makefile:69: recipe for target 'Foundation-libexec' failed
make: *** [Foundation-libexec] Error 2

这也是我用来编译 de 代码的行:

$ ./configure --config=CYGWIN --omit=NetSSL_OpenSSL,Crypto,Data/ODBC,Data/MySQ --prefix=./_INSTALL
$ make clean
$ make -j4 -nodemos
$ make install

对于此错误的任何帮助将不胜感激,谢谢。

最佳答案

这是因为 MinGW 的 c:\mingw\include\sdkddkver.h 与您的 Windows 操作系统版本相比已过时。看看这个页面:

Using the Windows Headers

并检查某些 #define 是否未包含在上述文件中。我刚刚使用 Windows 8.1 并收到相同的错误。

解决方案可能是使用来自 MinGW 的更新版本,例如 MinGW-w64或任何 Visual Studio version

关于c++ - 为 cygwin 编译 Poco 源时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28482696/

相关文章:

c++ - 完整的 C++ "from scratch"框架

entity-framework - 以编程方式启用/禁用实体代理

c++ - 自然算术 C++ 总是返回 1

C++:从类继承是否将其带入命名空间?

c++ - 除法后的 OpenCv 回合

c++ - 我可以使用 Qt 检测 QWERTY/AZERTY 键盘吗?

utf-8 - 在 Windows 中将 cp1252 批量转换为 utf-8

c++ - 使用 gdb 附加到尚未启动的进程

emacs - 在 perl 模式 emacs 中关闭自动缩进

c++ - Websocket 广播不工作