Anzeige:
Ergebnis 1 bis 5 von 5

Thema: g++ und objectdateien

  1. #1
    Registrierter Benutzer
    Registriert seit
    11.04.2006
    Beiträge
    69

    g++ und objectdateien

    Hi,

    ich will meine c++ programe in mehrer Objecte beim komplieren aufteilen (was das bringen soll, nur zum probieren, auch weil ich make mal antesten will).

    z.B(ist nur ein Beispiel, hab kein Quelltext dazu)
    main.cpp das haupprogramm
    include.h werden Functionsrümpfe festgelegt
    include.cpp Funktionen werden geschrieben

    die include.h wird durch #include in main.cpp eingebunden
    die include.h wird in #include.cpp eingebunden


    nun kann ich z.B
    g++ -c main.cpp
    g++ -c include.cpp
    g++ main.o include.o
    ausführen( ode rmit make) um mein Programm zu komplieren und linken

    bei meinen bisherigen versuchen hat das aber nicht funktioniert
    -> einfach nur g++ main.cpp (ging normal)
    -> g++ -c main.cpp ging auch
    aber
    -> g++ -c include.cpp ging nicht!!!!!....g++ -c main.o.....g++ main.o incl...
    ging nicht die folgenden fehlermeldungen erscheinen bei
    g++ -c include.cpp:

    (hier mal so eine Fehlermeldung wenn ich das probier)

    file included from user.cpp:1:
    user.h:19: error: 'string' is used as a type, but is not defined as a type.
    user.h:30: error: type specifier omitted for parameter `string'
    user.h:30: error: parse error before `)' token
    user.h:31: error: type specifier omitted for parameter `string'
    user.h:31: error: parse error before `)' token
    In file included from user.h:44,
    from user.cpp:1:
    user.cpp:5: error: type specifier omitted for parameter `string'
    user.cpp:5: error: parse error before `)' token
    user.cpp: In function `bool user_add(...)':
    user.cpp:14: error: `MyUser' undeclared (first use this function)
    user.cpp:14: error: (Each undeclared identifier is reported only once for each
    function it appears in.)
    user.cpp: At global scope:
    user.cpp:23: error: type specifier omitted for parameter `string'
    user.cpp:23: error: parse error before `)' token
    user.cpp: In function `bool user_del(...)':
    user.cpp:27: error: `Username' undeclared (first use this function)
    user.cpp: In function `bool user_list(SUser**)':
    user.cpp:42: error: `cout' undeclared (first use this function)
    user.cpp:42: error: 'struct SUser' has no member named 'UserName'
    user.cpp:42: error: `endl' undeclared (first use this function)
    user.cpp: At global scope:
    user.cpp:3: error: duplicate initialization of SUser::users
    user.cpp:3: error: redefinition of `int SUser::users'
    user.cpp:3: error: `int SUser::users' previously defined here
    user.cpp:5: error: type specifier omitted for parameter `string'
    user.cpp:5: error: parse error before `)' token
    user.cpp: In function `bool user_add(...)':
    user.cpp:6: error: redefinition of `bool user_add(...)'
    user.cpp:6: error: `bool user_add(...)' previously defined here
    user.cpp:6: error: redefinition of `bool user_add(...)'
    user.cpp:6: error: `bool user_add(...)' previously defined here
    user.cpp: At global scope:
    user.cpp:23: error: type specifier omitted for parameter `string'
    user.cpp:23: error: parse error before `)' token
    user.cpp: In function `bool user_del(...)':
    user.cpp:24: error: redefinition of `bool user_del(...)'
    user.cpp:24: error: `bool user_del(...)' previously defined here
    user.cpp:24: error: redefinition of `bool user_del(...)'
    user.cpp:24: error: `bool user_del(...)' previously defined here
    user.cpp: In function `bool user_list(SUser**)':
    user.cpp:39: error: redefinition of `bool user_list(SUser**)'
    user.cpp:39: error: `bool user_list(SUser**)' previously defined here
    user.cpp:39: error: redefinition of `bool user_list(SUser**)'
    user.cpp:39: error: `bool user_list(SUser**)' previously defined here
    user.cpp:42: error: 'struct SUser' has no member named 'UserName'
    user.cpp: In function `bool user_defrag(SUser**)':
    user.cpp:53: error: redefinition of `bool user_defrag(SUser**)'
    user.cpp:53: error: `bool user_defrag(SUser**)' previously defined here
    user.cpp:53: error: redefinition of `bool user_defrag(SUser**)'
    user.cpp:53: error: `bool user_defrag(SUser**)' previously defined here



    leider hab ich den Quelltext nicht mehr, werd aber mal versuchen das Problem nochmal einzutppen... aber das Schema mit main.cpp, inc....cpp, inc...h ist so ähnlich

  2. #2
    Registrierter Benutzer Avatar von Detrius
    Registriert seit
    09.03.2004
    Ort
    Altena
    Beiträge
    64
    Hast Du vergessen string zu inkludieren?

  3. #3
    Registrierter Benutzer
    Registriert seit
    11.04.2006
    Beiträge
    69
    ja das kann sein, das hab ich auch noch nachfolgend gemacht :-)


    aber der eigentliche Fehler lag wo anders:

    ich habe in der include.h ein #include "include.cpp" gehabt, als ich diese zeile gelöscht hatte ging es aufeinmal

  4. #4
    Registrierter Benutzer
    Registriert seit
    24.01.2005
    Beiträge
    23
    "Auf einmal" ist gut
    Sowas darfst du natürlich nicht. Includen sollte man nur Header-Dateien, die nur die Definitionen von Variablen und Funktionen enthalten.

  5. #5
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Er hat afair Templates (stand in einem anderen Thread), da ist das dann glaub ich schon etwas ambivalenter wo man was hinschreibt. Erinner mich nicht mehr so genau daran - hab schon lange keine mehr geschrieben.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

Lesezeichen

Berechtigungen

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