0

文件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

请帮忙

4

2 回答 2

1

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

于 2016-09-19T08:53:21.933 回答
0

您的代码不完整,它不会像发布的那样编译。

该代码使用可能来自 Borland 的 DOS 库来访问 DOS 图形显示卡。这是很老的,不能很好地转化为 linux 环境。

要么提供你自己的所有图形功能的实现(不太可能),要么使用 linux 特定的图形 API。

于 2016-03-13T22:25:28.540 回答