Настройка libpdcurses.a для Pdcurses
Я работаю над программой, в которой я использую функции PDCurses3.5, используя i686-w64-mingw32-gcc.exe. Когда я компилирую программу, я продолжаю получать ошибки, такие как "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 в своем библиотечном файле. Что я делаю неправильно?
1 ответ
Когда вы используете -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