C未定义的参考

我有以下代码:

main.c中

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

checksum.c

 #include  #include  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); } 

checksum.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 

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

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

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

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

编辑:要自动执行此过程,请查看make程序,该程序读取Makefile

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

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