【问题标题】:ncurses program using MinGW-w64 fails with "Error opening terminal: xterm"使用 MinGW-w64 的 ncurses 程序失败并显示“打开终端时出错:xterm”
【发布时间】:2023-02-06 00:24:43
【问题描述】:

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

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

【问题讨论】:

  • 我可以重现,但如果我在cmd 中运行该程序,它就可以工作。可能 mintty 不算作该库的真正交互式控制台。
  • @HolyBlackCat 不知何故 TERM env var 需要取消设置为 mingw 构建工作。相反,TERM env var 需要使 msys 构建正常工作。不知道背后的理由是什么。

标签: c++ mingw ncurses


【解决方案1】:

MInGW 构建适用于 Windows 控制台(请参阅README.MinGW)。其他平台使用$TERM。 msys2 的 mingw32 和 mingw64 配置用于针对 Windows 控制台。如果您希望程序在其中运行,请使用 msys2 配置配置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-10
    • 2011-10-11
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多