我正在尝试编写一个非常简单的 ncurses 程序,只是为了在 Windows 10 上使用 mingw-w64 来玩玩。我使用 pacman 安装了
mingw-w64-x86_64-ncurses
包,并使用 MSYS2 MinGW64 环境终端。我没有使用过任何 Curses 库的经验,也没有在 Windows 上开发一般软件的经验。
我在
Main.cpp
中编写了以下hello world程序:
#include <iostream>
#include <ncurses.h>
#include "Headers.hpp"
int main(int argc, char ** argv) {
initscr();
printw("Hello World!");
refresh();
getch();
endwin();
return 0;
}
我使用以下命令编译它:
g++ -I /C/msys64/mingw64/include/ncurses HelloWorld.cpp -L/C/msys64/mingw64/bin -lncursesw6 -o main
它可以编译,但是当我运行
main.exe
时,我得到了
Error opening terminal: xterm.
为什么会发生这种情况,我该如何解决?
我在 msys2 上使用 ucrt64 环境时遇到了类似的问题。似乎找不到 xterm 的正确配置。尝试:
export TERM=xterm
export TERMINFO=<path_to_ncurse_build>/share/terminfo
./my_program.exe
应该可以。祝你编码顺利!!!
MInGW 构建适用于 Windows 控制台(请参阅 README.MinGW)。其他平台使用
$TERM
。 msys2 的 mingw32 和 mingw64 配置用于针对 Windows 控制台。如果您希望程序在 that 配置中工作,请使用 msys2 配置。
Windows 控制台 API 使用函数调用而不是编写字符(和转义序列)。这与 mintty(在 msys2 中使用)、xterm、Windows Terminal 不同。
进一步阅读:
这个答案(在此页面上)对我来说有点有用。以下是我给出的示例命令:
export TERM=xterm
export TERMINFO=/mingw64/share/terminfo
然后执行我的程序:
./hello.exe
但是“MSYS2 MinGW x64”终端工作得不太好。 所以我尝试了 Windows 命令提示符 (Windows 11),效果非常好。