如何摆脱Linux中DDA行算法中的以下错误?

时间:2016-03-13 22:09:21

标签: c linux gcc gcc-warning dda

档案 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 个答案:

答案 0 :(得分:0)

您的代码不完整,无法编译为已发布。

代码使用可能来自Borland的DOS库来访问DOS图形显示卡。这是非常古老的,并不能很好地转换为Linux环境。

提供您自己的所有图形功能实现(不太可能),或使用特定于Linux的图形API。

答案 1 :(得分:0)

你没有太多事要做,只需将其编译为&#39; gcc line_3.c -o line_3 -lgraph&#39;,你肯定会得到答案。 所有这些显示错误的函数都是lgraph包。 :)