Hackerboard WikiHaboBlog

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

Undefined Reference vs. Doppeldeklarierung

Diskussion: Undefined Reference vs. Doppeldeklarierung im Forum Code Kitchen, in der Kategorie Software Home; Hallo Community, ich programmiere momentan für einen AVR Microcontroller (atmega32) und für das dazugehörige Funkmodul RFM12 in C. Dazu habe ...

Antwort
Alt 25.11.09, 17:34   #1 (permalink)
 
Benutzerbild von bad_alloc
 
Registriert seit: 27.12.07
bad_alloc Leistung: Z3
Likes: 24
Standard Undefined Reference vs. Doppeldeklarierung


Hallo Community,
ich programmiere momentan für einen AVR Microcontroller (atmega32) und für das dazugehörige Funkmodul RFM12 in C. Dazu habe ich mir diese Bibliothek besorgt. Das Programm steht soweit, jedoch kriege ich folgende Fehler beim Linken:

Code:
 Linking console executable: bin/Debug/testprog1.elf
obj/Debug/main.o: In function `main':
/home/Name/Desktop/rfm12/test-atmega32/testprog1/main.c:55: undefined reference to `rfm12_rx_status'
/home/Name/Desktop/rfm12/test-atmega32/testprog1/main.c:57: undefined reference to `rfm12_rx_len'
/home/Name/Desktop/rfm12/test-atmega32/testprog1/main.c:58: undefined reference to `rfm12_rx_type'
/home/Name/Desktop/rfm12/test-atmega32/testprog1/main.c:64: undefined reference to `rfm12_rx_clear'
Die gesuchten Funktionen, nach dem Schema
Code:
static inline uint8_t rfm12_rx_status(void)
    {
        return ctrl.rf_buffer_out->status;
    }
werden in der Bibliothek definiert und auch von mir eingebunden: Ich includiere own_rfm12.h, welche wiederum rfmlib/rfm12.h (also die Bibliothek) einbindet. Die dazugehörige Sourcedatei ist ebenfalls miteingelinkt. (Sie wird wie in der Doku empfohlen in own_rfm12.c eingebunden). Wie gesagt erhalte ich einen "Undefined reference to..." Error. Eine Vorwärtsdeklaration hilft ebenfalls nicht:
Code:
static inline uint8_t rfm12_rx_len(void);
=> warning: ‘rfm12_rx_len’ used but never defined|
Includiere ich die Implementierungsdatei der Funktionen seperat mit "#include "rfmlib/rfm12.c"", so bekomme ich Fehler nach dem Schema
Code:
/home/Name/Desktop/rfm12/test-atmega32/testprog1/./rfmlib/rfm12.c|343|multiple definition of `rfm12_tick'
Wie kann ich die Funktionen nun nutzen? Im Anhang findet ihr den kompletten Code des Prototypen (daher der grottige Code)

mfg
bad_alloc

EDIT: das ganze wird auf Ubuntu 8.10 mit der IDE Code::Blocks definiert, die den Compiler avr-gcc nutzt.
Angehängte Dateien
Dateityp: zip codeRFM12.zip (1,4 KB, 1x aufgerufen)
__________________
You shoot yourself in somebody else's foot.|Dann gabs da noch den Mathematiker der P?=NP in O(1) erklärte.
|[A]| = p(·,|[A]|)+1

Geändert von bad_alloc (26.11.09 um 19:31 Uhr)
bad_alloc ist offline   Mit Zitat antworten
Antwort
   

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » Undefined Reference vs. Doppeldeklarierung
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61