[C++]Linkerproblem: Header, Klassen

#2645933
Lesenswert?

ich habe drei dateien:

Netclass.h: Funktionsprototypen (bzw. eigtl Methoden)
Netclass.cpp: Methoden
user.cpp: hier steht die main() die ausgeführt werden soll.

das problem ist: wenn ich den konstruktor direkt in die klasse packe, 
meckert der linker nicht. wenn ich nur den prototypen in der klasse 
angebe und den konstruktor in der datei Netclass.cpp realisiere, meint 
der linker, er kennt die funktion nicht.

hier der relevante code:

user.cpp
1
[...]
2
#include "Netclass.h"
3
[...]
4
void user_main()
5
{
6
    class Net Testnet = Net("Testnet");
7
}

so funktioniert es:

netclass.h
1
class Net
2
{
3
    [...]
4
    Net(string Name){this->Name = Name;}
5
    [...]
6
};

und so nicht:

netclass.h
1
class Net
2
{
3
    [...]
4
    Net(string Name);
5
    [...]
6
};

netclass.cpp
1
[...]
2
#include "Netclass.h"
3
[...]
4
Net::Net(string Name)
5
{
6
    this->Name = Name;
7
}

ausführliche fehlermeldung:

Warning    1    warning LNK4042: object specified more than once; extras 
ignored    C:\HS\Sync\Semester 
VII\ADS\Projekt\Sync\Jones\Debug\Netclass.obj    1    1    ADS_NET

Error    2    error LNK2019: unresolved external symbol "public: 
__thiscall Node::Node(class std::basic_string<char,struct 
std::char_traits<char>,class std::allocator<char> >)" 
(??0Node@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@s 
td@@@Z)  referenced in function "void __cdecl user_main(void)" 
(?user_main@@YAXXZ)    C:\HS\Sync\Semester 
VII\ADS\Projekt\Sync\Jones\user.obj    ADS_NET

Error    3    error LNK1120: 1 unresolved externals 
C:\HS\Sync\Semester VII\ADS\Projekt\Sync\Jones\Debug\ADS_NET.exe    1 
1    ADS_NET

die zweite fehlermeldung bringt mir leider überhaupt nichts, da ich 
einfach nicht raffe wieso er die funktion nicht kennt, intellisense 
kennt sie jedenfalls
muss ich irgendwo ein extern hinklatschen?
die erste verstehe ich auch nicht. ich hab doch nur den prototypen sowie 
die realisierung. wo soll da "more than once" sein?

das witzige ist auch, dass es bereits funktioniert hat und ich 
eigentlich an einer komplett anderen stelle gearbeitet habe als der 
fehler auftrat. einmal kam der fehler, ich hab "rebuild all" gemacht und 
der fehler war weg. alles sehr dubios. "clean" hat auch nichts gebracht. 
arbeite mit visual studio 2010.
#2647693
Lesenswert?

Frank Meier schrieb:
> denken ist logik und nicht glückssache.

Dann betrachten wir es eben logisch: Da du ja denkst, daß alles korrekt 
ist, funktioniert alles, und du hast gar kein Problem ... denke ich.

> wieso sollte die datei nicht dem projekt hinzugefügt werden wenn man sie
> innerhalb des projektes mit den funktionen der IDE erstellt?

Was weiß denn ich? Fehler passieren. Das hier:

Frank Meier schrieb:
> Warning    1    warning LNK4042: object specified more than once; extras
> ignored    C:\HS\Sync\Semester
> VII\ADS\Projekt\Sync\Jones\Debug\Netclass.obj    1    1    ADS_NET

zeigt ja schon, das da was nicht stimmt. Da ist das File sogar doppelt 
drin.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren