1

我有以下代码:

主程序

#include "checksum.h"

void main()
{
    char *Buf ="GPGGA204502.005106.9813N11402.2921W1090.91065.02M-16.27M";
    checksum(Buf);
}

校验和.c

#include <stdio.h>
#include <string.h>

checksum(char *Buff)
{
    int i;
    unsigned char XOR;
    unsigned long iLen = strlen(Buff);
    printf("Calculating checksum...\n");
    for (XOR = 0, i = 0; i < iLen; i++)
        XOR ^= (unsigned char)Buff[i];
    printf("%X \n",XOR);
}

校验和.h

#ifndef CHECKSUM_H_INCLUDED
#define CHECKSUM_H_INCLUDED

void checksum(char *Buff);

#endif

编译时出现以下错误:

/tmp/ccFQS7Ih.o: In function `main':
main.c:(.text+0x18): undefined reference to `checksum'
collect2: ld returned 1 exit status

我无法弄清楚问题是什么?

4

3 回答 3

3

您只编译一个文件而不是两个文件。更准确地说,您没有将文件链接在一起。

我不知道你的编译器,但使用 gcc,它会是这样的:

gcc -c main.c          <-- compile only
gcc -c checksum.c      <-- compile only
gcc main.o checksum.o  <-- link the two

编辑:要自动执行此过程,请查看make读取Makefiles 的程序。

于 2012-03-20T10:34:41.233 回答
2

您也可以尝试 gcc -o program.out main.c checksum.c将两个文件编译并链接在一起

于 2012-03-20T13:10:35.970 回答
1

我认为:在 checksum.c 中,您应该包含 checksum.h。

于 2012-03-20T10:46:59.370 回答