使用 MinGW-w64 的 ncurses 程序失败并显示“打开终端时出错:xterm”

问题描述 投票:0回答:3

我正在尝试编写一个非常简单的 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.

为什么会发生这种情况,我该如何解决?

c++ mingw ncurses terminfo
3个回答
1
投票

我在 msys2 上使用 ucrt64 环境时遇到了类似的问题。似乎找不到 xterm 的正确配置。尝试:

export TERM=xterm
export TERMINFO=<path_to_ncurse_build>/share/terminfo
./my_program.exe

应该可以。祝你编码顺利!!!


0
投票

MInGW 构建适用于 Windows 控制台(请参阅 README.MinGW)。其他平台使用

$TERM
。 msys2 的 mingw32 和 mingw64 配置用于针对 Windows 控制台。如果您希望程序在 that 配置中工作,请使用 msys2 配置。

Windows 控制台 API 使用函数调用而不是编写字符(和转义序列)。这与 mintty(在 msys2 中使用)、xterm、Windows Terminal 不同。

进一步阅读:


0
投票

这个答案(在此页面上)对我来说有点有用。以下是我给出的示例命令:

export TERM=xterm

export TERMINFO=/mingw64/share/terminfo

然后执行我的程序:

./hello.exe

但是“MSYS2 MinGW x64”终端工作得不太好。 所以我尝试了 Windows 命令提示符 (Windows 11),效果非常好。

© www.soinside.com 2019 - 2024. All rights reserved.