如何为原生 Windows 使用编译 Ncurses 程序

How to Compile Ncurses Program for Native Windows Use

我正在尝试在 Windows 上使用 Ncurses 编译 C 程序。我使用 GCC 成功编译了它,如果我在 Cygwin 或 MSYS2 中 运行 它可以完美运行。但是,如果我尝试在 Windows 命令提示符中 运行 它,我会收到此错误:

Error opening terminal: xterm-256color.

是否可以使用本机 Windows 控制台将其编译为 运行?这就是我一直在编译它的方式:

gcc -o PROGRAMNAME main.c -lncurses

我还将 Ncurses 的 Cygwin 和 Msys dll 复制到已编译的可执行文件的目录中。

更新

所以我想出了如何让程序达到 运行。我从项目文件夹中删除了所有 DLL,然后将“C:\msys64\usr\bin”添加到我的 PATH 环境变量中。但是,如果我要分发它,我仍然想知道是否有办法让它工作,因为它仍然依赖于我安装的 MSYS2。

更新 2

放弃并使用 pdcurses,它工作正常。

更新 3

没关系,找到解决办法了!见下文。

我想出了一个解决办法。我会 post 在这里,以防其他人遇到同样的问题。感谢 Thomas Dickey 的帮助!

  1. 安装 mingw-w64 toolchain 和编译项目所需的任何其他包(这主要是我搞砸的地方)
  2. 编译时一定要包含/mingw64/include/ncurses目录,否则gcc找不到curses.h
  3. 包括 /mingw64/bin 作为静态目录或将必要的 dll 复制到与目录相同的文件夹中

我最后用这个来编译:

gcc -I/mingw64/include/ncurses -o PROGRAMNAME main.c -lncurses -L/mingw64/bin -static