LNK errors
-
hi,
ich und ein freund arbeiten gerade einem projekt für die schule.
er hat die oberfläche mittles MFC gemacht und ich hab die Dateiverarbeitung gemacht.
Die Dateiverarbeitung ist in 3 dateien aufgeteilt. Wenn wir diese 3 dateien jetzt in das projekt mit der oberfläche inkludiern, bekommen wir eine menge linkerfehler.1>------ Build started: Project: Server, Configuration: Debug Win32 ------ 1>Linking... 1>ServerDlg.obj : error LNK2005: "public: __thiscall icd::CLIENTINFO::CLIENTINFO(void)" (??0CLIENTINFO@icd@@QAE@XZ) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: __thiscall icd::CLIENTINFO::CLIENTINFO(int,int,int)" (??0CLIENTINFO@icd@@QAE@HHH@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: __thiscall icd::CLIENTINFO::~CLIENTINFO(void)" (??1CLIENTINFO@icd@@QAE@XZ) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "protected: char * __fastcall icd::CLIENTINFO::select(int)" (?select@CLIENTINFO@icd@@IAIPADH@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "protected: int __cdecl icd::CLIENTINFO::copy(char *,char *)" (?copy@CLIENTINFO@icd@@IAAHPAD0@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __cdecl icd::CLIENTINFO::set(char *,int)" (?set@CLIENTINFO@icd@@QAAHPADH@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __cdecl icd::CLIENTINFO::set(char *,char *,char *,char *,char *,char *)" (?set@CLIENTINFO@icd@@QAAHPAD00000@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __cdecl icd::CLIENTINFO::set(char *,char *,char *,char *,char *,char *,int)" (?set@CLIENTINFO@icd@@QAAHPAD00000H@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __cdecl icd::CLIENTINFO::set(char *,char *,char *,int)" (?set@CLIENTINFO@icd@@QAAHPAD00H@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __cdecl icd::CLIENTINFO::set(class icd::CLIENTINFO *)" (?set@CLIENTINFO@icd@@QAAHPAV12@@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __cdecl icd::CLIENTINFO::set(struct icd::STRUCT_CLIENTINFO *)" (?set@CLIENTINFO@icd@@QAAHPAUSTRUCT_CLIENTINFO@2@@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: char * __cdecl icd::CLIENTINFO::get(int)" (?get@CLIENTINFO@icd@@QAAPADH@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: class icd::CLIENTINFO * __thiscall icd::CLIENTINFO::get(void)" (?get@CLIENTINFO@icd@@QAEPAV12@XZ) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __cdecl icd::CLIENTINFO::replace(char *,int)" (?replace@CLIENTINFO@icd@@QAAHPADH@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __thiscall icd::CLIENTINFO::clear(void)" (?clear@CLIENTINFO@icd@@QAEHXZ) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __fastcall icd::CLIENTINFO::clear(int)" (?clear@CLIENTINFO@icd@@QAIHH@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: class icd::CLIENTINFO __thiscall icd::CLIENTINFO::operator=(class icd::CLIENTINFO)" (??4CLIENTINFO@icd@@QAE?AV01@V01@@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "int __cdecl icd::clear(class icd::CLIENTINFO *)" (?clear@icd@@YAHPAVCLIENTINFO@1@@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "int __cdecl icd::clear(class icd::CLIENTINFO *,int)" (?clear@icd@@YAHPAVCLIENTINFO@1@H@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "int __cdecl icd::set(class icd::CLIENTINFO *,char *,int)" (?set@icd@@YAHPAVCLIENTINFO@1@PADH@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "char * __cdecl icd::get(class icd::CLIENTINFO *,int)" (?get@icd@@YAPADPAVCLIENTINFO@1@H@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "private: int __thiscall icd::CLIENTFILE::_write_serial(void)" (?_write_serial@CLIENTFILE@icd@@AAEHXZ) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "private: int __thiscall icd::CLIENTFILE::_write_other(void)" (?_write_other@CLIENTFILE@icd@@AAEHXZ) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __thiscall icd::CLIENTFILE::f_open(void)" (?f_open@CLIENTFILE@icd@@QAEHXZ) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __thiscall icd::CLIENTFILE::f_close(void)" (?f_close@CLIENTFILE@icd@@QAEHXZ) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __thiscall icd::CLIENTFILE::f_write(void)" (?f_write@CLIENTFILE@icd@@QAEHXZ) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __thiscall icd::CLIENTFILE::f_clear(void)" (?f_clear@CLIENTFILE@icd@@QAEHXZ) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __fastcall icd::CLIENTFILE::f_set(int)" (?f_set@CLIENTFILE@icd@@QAIHH@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __thiscall icd::CLIENTFILE::f_read(void)" (?f_read@CLIENTFILE@icd@@QAEHXZ) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __cdecl icd::CLIENTFILE::f_search(char *)" (?f_search@CLIENTFILE@icd@@QAAHPAD@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __cdecl icd::CLIENTFILE::f_exist(char *)" (?f_exist@CLIENTFILE@icd@@QAAHPAD@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __cdecl icd::CLIENTFILE::f_delete(char *)" (?f_delete@CLIENTFILE@icd@@QAAHPAD@Z) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __thiscall icd::CLIENTFILE::f_recover(void)" (?f_recover@CLIENTFILE@icd@@QAEHXZ) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __thiscall icd::CLIENTFILE::f_create(void)" (?f_create@CLIENTFILE@icd@@QAEHXZ) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "public: int __thiscall icd::CLIENTFILE::f_delete(void)" (?f_delete@CLIENTFILE@icd@@QAEHXZ) already defined in Server.obj 1>ServerDlg.obj : error LNK2005: "private: static int icd::CLIENTFILE::Number" (?Number@CLIENTFILE@icd@@0HA) already defined in Server.obj 1>C:\Dokumente und Einstellungen\manixx\Desktop\ProjektSteve\ProjektSteve\Server\Debug\Server.exe : fatal error LNK1169: one or more multiply defined symbols found 1>Build log was saved at "file://c:\Dokumente und Einstellungen\manixx\Desktop\ProjektSteve\ProjektSteve\Server\Server\Debug\BuildLog.htm" 1>Server - 37 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========Diese bekomme ich wenn ich 2 von 3 dateien inkludiere. wenn ich die 3 noch mit rein geben, werden die fehler nur noch mehr.
ich hoffe ihr könnt uns helfen
ps: wir arbeiten mit visual studio 2005danke im voraus
-
Ganz klar, Mehrfachdefinitionen von Funktionen. Alles, was nicht inline ist, hat in den Headern nichts zu suchen - also kannst du die genannten Funktionen entweder inline definieren (wenn sie klein genug dafür sind) oder in eine eigene .CPP auslagern, die du mit in dein Projekt packst.
-
ok danke für die schnell antwort. hab das natürlich sofort umgestellt. nur wenn ich jetz compiliere dann kommt folgender fehler.
1>c:\dokumente und einstellungen\...\server\server\cl_clientnfo.cpp(334) : fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?gut.. den versteh ich ja noch halbwegs. wenn ich jetzt aber dieses "stdafx.h" inkludiere bekomm ich (wieder) folgenden fehler:
1>c:\dokumente und einstellungen\...\server\server\cl_clientf.cpp(2) : fatal error C1853: 'Debug\Server.pch' precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa)den versteh ich jetz nicht mehr. alle dateien und projekte sind mit der selben version erstellt worden.. lediglich auf anderen pcs
hoffe ihr könnt mir ein weiters mal helfen
danke im voraus
-
Dann schalt doch die Precompiled Headers für dein Projekt aus.
-
Ihr müsst einfach mal die Solution/Projektmappe oder das entsprechende Projekt bereinigen, damit die alten PCHs gelöscht und neu erzeugt werden können.
Weiterhin muß das inklude immer vor alle anderen Inkludes.
-
CStoll schrieb:
Dann schalt doch die Precompiled Headers für dein Projekt aus.
Was ist das denn für eine Lösung? Downgraden?
-
danke.. habs inbekommen..
danke vielmals *nieder knie*
-
Artchi schrieb:
CStoll schrieb:
Dann schalt doch die Precompiled Headers für dein Projekt aus.
Was ist das denn für eine Lösung? Downgraden?
Ehe ich mich stundenlang damit auseinandersetze, wozu die gut sind (bietet außer VC noch jemand sowas an) und wie ich sie vernünftig einsetzen kann, schalte ich sie lieber ab.
PS: Und meine stdafx.h sieht normalerweise sehr umfangreich aus

-
Ja, jeder ernsthafte Compiler sollte PCHs unterstützen. Das tut mittlerweile auch der GCC. Und das bestimmt nicht, weil sie sinnfrei sind. Ich schalte die Dinger immer ein, besonders wenn ich viele Templates benutze. Der Performance-Gewinn des Compile-Vorgangs macht sich bemerkbar.
Aber wer nicht will, muß ja nicht. Nur fand ich deinen Lösungsvorschlag etwas merkwürdig. Das ist irgendwie so "Was ich nicht verstehe, schalte ich ab." Ist aber nicht der Sinn dieses Forums. Wenn jemand PCHs benutzt, versuche ich ihm zu erklären, wie er sie richtig nutzt, zumal die Lösung nur einen Mouseclick weit weg war.