我正在使用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