Как мне избавиться от следующей ошибки в алгоритме линии DDA в Linux?
Файл line_3.c:
#include <stdio.h>
//#include <dos.h>
#include <graphics.h>
void lineDDA(int, int, int, int);
void main() {
int x1, y1, xn, yn;
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
printf("Enter the starting coordinates of line: ");
scanf("%d %d", &x1, &y1);
printf("Enter the ending coordinates of line: ");
scanf("%d %d", &xn, &yn);
lineDDA(x1, y1, xn, yn);
getch();
}
void lineDDA(int x1, int y1, int xn, int yn) {
int dx, dy, m, i;
m = (yn - y1) / (xn - x1);
for (i = x1; i <= xn; i++) {
if (m <= 1) {
dx = 1;
dy = m * dx;
} else {
dy = 1;
dx = dy / m;
}
x1 = x1 + dx;
y1 = y1 + dy;
putpixel(x1, y1, RED);
delay(20);
}
// MISSING CODE
Команда компиляции:
gcc line_3.c -o line_3 -lm
Ошибка:
meshramsd@ubuntu:~$ gcc line_3.c -o line_3 -lm
/tmp/ccYuGyd4.o: In function `main':
line_3.c:(.text+0x23): undefined reference to `initgraph'
line_3.c:(.text+0x32): undefined reference to `grprintf'
line_3.c:(.text+0x4c): undefined reference to `grscanf'
line_3.c:(.text+0x5b): undefined reference to `grprintf'
line_3.c:(.text+0x75): undefined reference to `grscanf'
line_3.c:(.text+0x8d): undefined reference to `grgetch'
/tmp/ccYuGyd4.o: In function `lineDDA':
line_3.c:(.text+0x110): undefined reference to `putpixel'
line_3.c:(.text+0x11d): undefined reference to `delay'
collect2: error: ld returned 1 exit status
Пожалуйста помоги
2 ответа
Вам не нужно ничего делать, просто скомпилируйте его как "gcc line_3.c -o line_3 -lgraph", конечно, вы получите ответ. Все эти функции, показывающие ошибку, относятся к пакету lgraph.:)
Ваш код неполон, он не будет скомпилирован как опубликовано.
Код использует библиотеку DOS, вероятно, от Borland, для доступа к графическим картам DOS. Это очень старая версия, которая плохо подходит для среды Linux.
Либо предоставьте собственную реализацию всех графических функций (маловероятно), либо используйте специальный графический API для Linux.