gcc 如何在windows上安装ncurses

vbopmzt1  于 2023-03-12  发布在  Windows
关注(0)|答案(1)|浏览(573)

我怎样才能让ncurses在我的windows上工作?我已经尝试了所有的方法来让它工作,但是我的gcc编译器不能识别它,它被正确地安装在目录C:\msys64\mingw64\include\ncurses中,我是通过MSYS 2安装的。有人能帮助我吗?
我尝试编译代码如下:gcc test.c -o test -IC:\msys64\mingw64\include它在编译器中向我返回错误,我尝试使用另一个命令运行它:gcc test.c -o test -I C:\msys64\mingw64\include -L C:\msys64\mingw64\lib -incurses它也不工作,我不知道该怎么办。
特定错误:试验C:1 ∶ 10:致命错误:ncurses.h:没有这样的文件或目录1|#包括<ncurses.h>|^~~~~~~~~~~编译终止。我使用的是vscode,但即使在windows终端也出现了同样的问题。

vhmi4jdf

vhmi4jdf1#

在VS Code使用的msys 2 MingW 64的默认安装中,ncurses基本上是存在的,但是正确的include和link并不是不言而喻的。
下面是一个非常简单的ncurses-helloworld.cpp:

#include <ncurses/ncurses.h>

int main(int argc, char ** argv)
{
    // init screen and sets up screen
    initscr();
    // print to screen
    printw("Hello World");
    // refreshes the screen
    refresh();
    // pause the screen output
    getch();
    // deallocates memory and ends ncurses
    // endwin();
    return 0;
}

当然,您可以在vscode的配置中、编译器的命令行中、makefile中或任何地方设置include路径,以便

#include <ncurses.h>

工作,但在此期间,我习惯于只包含C:\msys64\mingw64\include子目录中的所有内容,格式为#include <directory name/filename.h>-这非常容易工作,无需任何进一步的配置设置,对于可以通过pacman使用msys包直接安装的所有内容。
要使用此命令正确链接ncurses库,请使用以下命令:

g++ test.cpp -o test.exe -lncurses -DNCURSES_STATIC

gcc test.c -o test.exe -lncurses -DNCURSES_STATIC

用于纯C程序。
布雷希特Sanders在关于this question的评论中给出了解释,这导致OP当时采取了适当的解决方案:
除非定义了NCURSES_STATIC,否则标头将定义__declspec(dllexport),因此添加-DNCURSES_STATIC作为编译选项将修复所有问题。

相关问题