我正在使用i686-w64-mingw32-gcc.exe使用PDCurses3.5函数的程序。
编译程序时,不断出现诸如"undefined reference to 'COLS'""undefined reference to 'lines'"之类的错误。
我检查了<curses.h>标头和库包是否已正确安装。
这是我的输入行:

> i686-w64-mingw32-gcc.exe set.o read.o elements.o random.o
> -L../standard/test -lplotfit -lplotget -lgfortran -Wl,--subsystem,console -mwindows -o runtime/mingw/result -lm -static -lws2_32  -lpdcurses


错误的第一部分是:

../standard/bin/mingw/menu.o:menu.c:(.text+0xb): undefined reference to `COLS'
../standard/bin/mingw/menu.o:menu.c:(.text+0x16): undefined reference to `COLS'
../standard/bin/mingw/menu.o:menu.c:(.text+0x33): undefined reference to `LINES'
../standard/bin/mingw/menu.o:menu.c:(.text+0x47): undefined reference to `MOVE'
../standard/bin/mingw/menu.o:menu.c:(.text+0x74): undefined reference to `initscr'
...


似乎该程序无法在其库文件中引用libpdcurses.a。
我究竟做错了什么?

最佳答案

使用-lpdcurses时,链接程序会在某些预定义位置以及通过libpdcurses.a指定的位置中查找-L。但是,默认情况下,该库被构建为pdcurses.a。要链接它,可以直接指定它的位置。例如。:

gcc -oprogname.exe progname.c pdcurses.a


要么

gcc -oprog2.exe prog2.c /pdcurses/win32/pdcurses.a


或者,您可以将库重命名为libpdcurses.a,然后将其复制到现有搜索路径中的某个位置,或使用-L

gcc -oprogname.exe progname.c -lpdcurses


要么

gcc -oprog2.exe prog2.c -L/pdcurses/win32 -lpdcurses

09-11 05:37