上下文:我们正在从linux (ubuntu)构建跨平台应用程序。我们使用ubuntu软件包中可用的mingw-w64(撰写本文时为v7.0.0-2)。我们想开始使用Windows ConPTY API(又名伪控制台)。在mingw-w64中支持ConPTY吗?有人做过吗?由于
看起来只有windows WINNT和windows NTDDI版本分别为_WIN32_WINNT_WIN10
和NTDDI_WIN10_RS5
或更新版本才启用了ConPTY专用功能。MinGW(7.0.0-2)将WINNT版本默认设置为_WIN32_WINNT_WS03
(Windows Server 2003)
通过在包含windows.h
之前手动设置这些值,可以在Ubuntu的MinGW-w64包v7.0.0-2中使用ConPTY函数。
示例代码:
#define NTDDI_VERSION 0x0A000006 //NTDDI_WIN10_RS5
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0A00 // _WIN32_WINNT_WIN10
#include <windows.h>
#include <wincon.h>
CreatePseudoConsole(size, inputReadSide, outputWriteSide, 0, &hPC);