C Неопределенная ссылка - PullRequest
1 голос
/ 20 марта 2012

У меня есть следующий код:

main.c

#include "checksum.h"

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

checksum.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);
}

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

Я не могу понять, в чем проблема?

Ответы [ 3 ]

3 голосов
/ 20 марта 2012

Вы компилируете только один файл, а не оба.Точнее, вы не связываете файлы вместе.

Я не знаю ваш компилятор, но с gcc это будет примерно так:

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

Редактировать: Чтобы автоматизировать этот процесс, взгляните на программу make, которая читает Makefile с.

2 голосов
/ 20 марта 2012

Вы также можете попробовать gcc -o program.out main.c checksum.c, который скомпилирует и свяжет оба файла вместе

1 голос
/ 20 марта 2012

Я думаю: в checkum.c вы должны включить checkum.h.

...