Forum: Mikrocontroller und Digitale Elektronik Eigene Header Datei richtig einbinden


von Nino K. (lnino)


Lesenswert?

Hi an alle.

Ich versuche eine eigene Header Datei einzubinden, da in mein Programm 
viele Funktionen reinkommen und ich somit für einen besseren Überblick 
sorgen möchte.

Wenn ich aber mit "make" auf der Console versuche zu kompelieren, dann 
bekomme ich die Fehlermeldung: Undefined Reference to 'test'

Wo könnte hier der Fehler liegen?

Im Hauptprogramm binde ich die Datei folgendermaßen ein:
#include "../myheaderfiles/testlib.h"

Und ich habe im Hauptprogramm folgenden Aufruf drin:
test('A');

Die Datei testlib.h sieht wie folgt aus:
#ifndef __TESTLIB_H
#define __TESTLIB_H

void test(char x);

#endif /* TESTLIB_H */

Die Datei testlib.c sieht so aus:
#include "testlib.h"

#include <avr/io.h>
#include <avr/pgmspace.h>
#include <inttypes.h>
#include <stdio.h>
#include "delay.h"

void test(char x) {
// do something
}

Hat jemand eine Idee wo hier der Fehler liegen könnte?

Víelen Dank.
von Karl H. (kbuchegg)


Lesenswert?

El Nino schrieb:
> Hi an alle.
>
> Ich versuche eine eigene Header Datei einzubinden, da in mein Programm
> viele Funktionen reinkommen und ich somit für einen besseren Überblick
> sorgen möchte.
>
> Wenn ich aber mit "make" auf der Console versuche zu kompelieren, dann
> bekomme ich die Fehlermeldung: Undefined Reference to 'test'

undefined reference ist eine Fehlermeldung vom LInker, der aus den 
Einzelteilen das endgültige komplette Programm zusammenbaut.

Du musst auch testlib.c compilieren und vom Linker zum Programm 
dazufügen lassen. Sonst fehlt ja die Implementierung dieser Funktion. 
Und genau das teilt dir der Linker mit.

Also: einfach testlib.c mit ins Projekt aufnehmen und schon klappts.

http://www.mikrocontroller.net/articles/FAQ#Ich_hab_da_mehrere_.2A.c_und_.2A.h_Dateien._Was_mache_ich_damit.3F
von Nino K. (lnino)


Lesenswert?

Hi Karl Heinz,

danke für deine Antwort und den informativen Link.

Das war genau die Lösung für mein Problem.

Vielen Dank und noch einen schönen Abend.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.