PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : g++ und objectdateien



barton4
28-09-2006, 20:31
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

Detrius
28-09-2006, 20:42
Hast Du vergessen string zu inkludieren?

barton4
28-09-2006, 21:03
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

Keeper
30-09-2006, 17:12
"Auf einmal" ist gut :D
Sowas darfst du natürlich nicht. Includen sollte man nur Header-Dateien, die nur die Definitionen von Variablen und Funktionen enthalten.

peschmae
30-09-2006, 18:56
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ä