- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 2 von 2

Thema: Fehler beim Einbinden der Header-Dateien?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    30.07.2010
    Beiträge
    62

    Fehler beim Einbinden der Header-Dateien?

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    ich habe Probleme beim Einbinden von externen Bibliotheken ins AVR-Studio 4.
    Hier als Beispiel:

    Code:
    #include <avr/interrupt.h>  // Wird nur gebraucht bei der Interrupt-Version 
    #include "uart.h"
    
    // Einen 0-terminierten String übertragen. 
    void uart_puts (const char *s)
    {
        do
        {
            uart_putc (*s);
        }
        while (*s++);
    }
    
    // Ein Zeilenumbruch, abhängig davon, was die Gegenstelle haben will 
    // Windows: "rn" 
    // Linux  : "n" 
    // MacOS  : "r" 
    #define CR "\r\n"
    
    char text[] = "Hallo Welt." CR;
    
    int main()
    {
        uart_init(2400);
        sei();   // Wird nur gebraucht bei der Interrupt-Version 
    
        uart_puts (text);
        uart_puts ("Hallo Welt!" CR);
    
        return 0;
    }
    Die Dateien uart.h und uart.c habe ich in das Projektverzeichnis kopiert und den Verzeichnissen "Source Files" und "Header Files" im AVR-Studio hinzugefügt.
    Als Makefile benutze ich das vom Studio selbst generierte.
    Wenn ich jetzt aber compilieren möchte spuckt der Compiler folgenden Text aus:

    Build started 1.9.2011 at 03:06:36
    avr-gcc -I"C:\Users\...\Documents\Versuche\..\..\Desktop\Li bs\UART Lib" -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT CVersuche.o -MF dep
    /CVersuche.o.d -c ../CVersuche.c

    avr-gcc -I"C:\Users\...\Documents\Versuche\..\..\Desktop\Li bs\UART Lib" -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT uart.o -MF dep/uart
    .o.d -c ../uart.c

    avr-gcc -mmcu=atmega8 -Wl,-Map=Versuche.map CVersuche.o uart.o -o Versuche.elf
    uart.o: In function `uart_puts':
    C:\Users\...\Documents\Versuche\default/../uart.c:447: multiple definition of `uart_puts'
    CVersuche.o:C:\Users\...\Documents\Versuche\defaul t/../CVersuche.c:6: first defined here
    make: *** [Versuche.elf] Error 1
    Build failed with 1 errors and 0 warnings...
    Vermute mal, dass ich irgend etwas bei der Verwendung der Bibliotheken nicht verstanden habe.
    Könnt ihr mir sagen, wo der Fehler ist und wie es richtig funktioniert?

    LG Kimba

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    36
    Beiträge
    1.225
    Zitat Zitat von Kimba Beitrag anzeigen
    ich habe Probleme beim Einbinden von externen Bibliotheken ins AVR-Studio 4.
    Nein, du hast Probleme mit deinem Code:
    Zitat Zitat von Kimba Beitrag anzeigen
    avr-gcc -mmcu=atmega8 -Wl,-Map=Versuche.map CVersuche.o uart.o -o Versuche.elf
    uart.o: In function `uart_puts':
    C:\Users\...\Documents\Versuche\default/../uart.c:447: multiple definition of `uart_puts'
    CVersuche.o:C:\Users\...\Documents\Versuche\defaul t/../CVersuche.c:6: first defined here
    make: *** [Versuche.elf] Error 1
    Build failed with 1 errors and 0 warnings...
    Die Fehlermeldung besagt, dass du zwei Funktionen nachmens uart_puts implementiert hast, einmal in Zeile 447 von uart.c und einmal am Anfang von CVersuche.c
    C mag es nicht, wenn eine Funktion mit gleichem Namen zweimal vorkommt (außer sie ist als statisch deklariert, dann kann sie nur innerhalb der aktuellen Quelltextdatei verwendet werden).

    Fehlermeldungen sind dazu da, dass man sie liest!

    mfG
    Markus

    PS: Ich bin mir mit der statischen Deklarierung gerade nicht 100% sicher, da müsste ich vorher nochmal nachsehen, ich meine aber dass es so ist.

Ähnliche Themen

  1. NIBObee: motpid.h einbinden erzeugt Fehler
    Von hanno72 im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 9
    Letzter Beitrag: 06.03.2012, 22:48
  2. Antworten: 7
    Letzter Beitrag: 27.02.2010, 20:12
  3. Problem beim erzeugen von eigenen Hex-Dateien
    Von Selproec im Forum Robby RP6
    Antworten: 23
    Letzter Beitrag: 20.02.2009, 19:55
  4. Assembler Dateien einbinden
    Von .Johannes. im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 11.03.2008, 12:48
  5. Fehler beim Rückwärtsfahren
    Von mexxmilian im Forum Robby RP6
    Antworten: 7
    Letzter Beitrag: 07.11.2007, 21:50

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test