使用PDCurses库编译测试程序时遇到一些问题。我已经用MinGW编译器8.2.0编译了PDCurses 3.4。在输出中,我有2个文件panel.a和pdcurses.a。我将它们复制到C:\ MinGW \ lib以及C:\ MinGW \ include中的头文件curses.h。但是,当我尝试编译测试程序时,会出现错误。看来我已按照指示和操作方法正确完成了所有操作。
一些测试C代码:
#include <C:\MinGW\include\curses.h>
int main () {
initscr();
mvprintw( 5, 5, "Hello, World!" );
getch();
endwin();
return 0;
}
错误:
c:/Users/username/Dropbox/rakshasa/main.c:4: undefined reference to `initscr'
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: c:/Users/username/Dropbox/rakshasa/main.c:5: undefined reference to `mvprintw'
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: c:/Users/username/Dropbox/rakshasa/main.c:6: undefined reference to `stdscr'
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: c:/Users/username/Dropbox/rakshasa/main.c:6: undefined reference to `wgetch'
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: c:/Users/username/Dropbox/rakshasa/main.c:7: undefined reference to `endwin'
我不知道为什么它不能正确编译。看起来编译器在链接阶段找不到库,但我不知道为什么。
我试图像 gcc -g main.c -o main.exe
谢谢。
答案 0 :(得分:0)
切勿在 [[11, 11], [15, 12], [13, 18], [14, 21]]
指令中使用绝对路径。如果需要,您应该放置 #include
而不是 #include <C:\MinGW\include\curses.h>
并使用 #include <curses.h>
标志进行编译。
接下来您需要使用 -IC:\MinGW\include
链接到相关库。如果需要,您可以使用 -lpdcurses
添加库的位置。
因此,如果我们拆分编译和链接步骤,您需要以下命令:
-LC:\MinGW\lib
虽然我认为您可以省略 gcc -g main.c -c -o main.o -IC:\MinGW\include
gcc main.o -o main.exe -lpdcurses -LC:\MinGW\lib
和 -I
标志,因为它们指向编译器的 -L
和 include
文件夹的位置。
最后:MinGW 有点过时了,GCC 8.2.0 也是如此。我建议您切换到 MinGW-w64(同时支持 32 位和 64 位 Windows)。要获得更新的 MinGW-w64 GCC 版本,您可以尝试来自 https://winlibs.com/ 的独立版本。