WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 14.10.2002, 15:44   #1
zenit
Jr. Member
 
Registriert seit: 17.05.2001
Alter: 52
Beiträge: 80


Standard Visual C++ Linkerfehler 2001 ?!?!?!

Hallo Leute!

Ich hätte da unten was zum knabbern.

Ich arbeite grad an nem recht großen SW-Ding, und bekomme nach einem Systemabsturz nun unten angefügte Meldung.

Laut meinem Informationsstand bedeuted das, das mein Linker diverse Funktionen in anderen zu linkenden Objekten findet. Nur soweit ich es beurteilen kann, sind alle Header da!?!?

Wäre dankbar für ein paar Hinweise, weil mich wohl bald mein Vorgesetzter killen wird, wenn ich den Fehler nicht bald finde.

thx G

================================================== ====================

Linker-Vorgang läuft...
Bibliothek Debug/MsgServer.lib und Objekt Debug/MsgServer.exp wird erstellt
Calculator.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: class CString __thiscall CGate::GetTempValueOut(void)" (?GetTempValueOut@CGate@@QAE?AVCString@@XZ)
Calculator.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: int __thiscall CGate::GetValue(void)" (?GetValue@CGate@@QAEHXZ)
Calculator.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: class CString __thiscall CGate::GetName(void)" (?GetName@CGate@@QAE?AVCString@@XZ)
MainFrm.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: __thiscall CCMServerView::CCMServerView(class CWnd *)" (??0CCMServerView@@QAE@PAVCWnd@@@Z)
MainFrm.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: int __thiscall CMilacronFile::ReadSettings(void)" (?ReadSettings@CMilacronFile@@QAEHXZ)
MainFrm.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: __thiscall CMilacronFile::CMilacronFile(class CString)" (??0CMilacronFile@@QAE@VCString@@@Z)
MainFrm.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: __thiscall CMilacronFile::~CMilacronFile(void)" (??1CMilacronFile@@QAE@XZ)

.
.
.
MainFrm.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: int __thiscall CCMServerView:isplayComm(int)" (?DisplayComm@CCMServerView@@QAEHH@Z)
MainFrm.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: int __thiscall CMachine::GetMemIndex(void)" (?GetMemIndex@CMachine@@QAEHXZ)
MainFrm.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: struct HWND__ * __thiscall CMachine::SetItemValue(char const *,char const *)" (?SetItemValue@CMachine@@QAEPAUHWND__@@PBD0@Z)
MainFrm.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: int __thiscall CMachine::GetMachineID(void)" (?GetMachineID@CMachine@@QAEHXZ)
MainFrm.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: class CString __thiscall CMachine::GetTopic(void)" (?GetTopic@CMachine@@QAE?AVCString@@XZ)
MainFrm.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: int __thiscall CMachine::IsConnected(void)" (?IsConnected@CMachine@@QAEHXZ)
MainFrm.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall CMachine::SetGateRetVal(int,int)" (?SetGateRetVal@CMachine@@QAEXHH@Z)
MainFrm.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: int __thiscall CMachine::IsFinished(void)" (?IsFinished@CMachine@@QAEHXZ)
MainFrm.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall CMachine::ReadDriverValues(void)" (?ReadDriverValues@CMachine@@QAEXXZ)
MainFrm.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: __thiscall CLogin::CLogin(class CWnd *)" (??0CLogin@@QAE@PAVCWnd@@@Z)
Server.obj : error LNK2001: Nichtaufgeloestes externes Symbol "struct HDDEDATA__ * __cdecl HelpXfer(struct _XFERINFO *,unsigned short)" (?HelpXfer@@YAPAUHDDEDATA__@@PAU_XFERINFO@@G@Z)
Server.obj : error LNK2001: Nichtaufgeloestes externes Symbol "struct HDDEDATA__ * __cdecl sysFormatsXfer(struct _XFERINFO *,unsigned short)" (?sysFormatsXfer@@YAPAUHDDEDATA__@@PAU_XFERINFO@@G @Z)
Server.obj : error LNK2001: Nichtaufgeloestes externes Symbol "struct HDDEDATA__ * __cdecl ItemListXfer(struct _XFERINFO *,unsigned short)" (?ItemListXfer@@YAPAUHDDEDATA__@@PAU_XFERINFO@@G@Z )
Server.obj : error LNK2001: Nichtaufgeloestes externes Symbol "struct HDDEDATA__ * __cdecl TopicListXfer(struct _XFERINFO *,unsigned short)" (?TopicListXfer@@YAPAUHDDEDATA__@@PAU_XFERINFO@@G@ Z)
Server.obj : error LNK2001: Nichtaufgeloestes externes Symbol "struct HDDEDATA__ * __stdcall DdeCallback(unsigned int,unsigned int,struct HCONV__ *,struct HSZ__ *,struct HSZ__ *,struct HDDEDATA__ *,unsigned long,unsigned long)" (?DdeCallback@@YGPAUH
DDEDATA__@@IIPAUHCONV__@@PAUHSZ__@@1PAU1@KK@Z)
Server.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall CFormatInfo::SetAtom(unsigned short)" (?SetAtom@CFormatInfo@@QAEXG@Z)
Server.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: char * __thiscall CFormatInfo::GetSz(void)" (?GetSz@CFormatInfo@@QAEPADXZ)
Server.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: __thiscall CFormatInfo::CFormatInfo(unsigned short,char *)" (??0CFormatInfo@@QAE@GPAD@Z)
Topic.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: char * __thiscall CItem::GetName(void)" (?GetName@CItem@@QAEPADXZ)
Topic.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: __thiscall CItem::CItem(char *,struct HDDEDATA__ * (__cdecl*)(struct _XFERINFO *,unsigned short))" (??0CItem@@QAE@PADP6APAUHDDEDATA__@@PAU_XFERINFO@@ G@Z@Z)
Topic.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: struct HSZ__ * __thiscall CItem::GetItem(void)" (?GetItem@CItem@@QAEPAUHSZ__@@XZ)
Topic.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: void __thiscall CItem::SetItem(struct HSZ__ *)" (?SetItem@CItem@@QAEXPAUHSZ__@@@Z)
Topic.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: struct HDDEDATA__ * __thiscall CItem:oCallBack(struct _XFERINFO *,unsigned short)" (?DoCallBack@CItem@@QAEPAUHDDEDATA__@@PAU_XFERINFO @@G@Z)
Debug/MsgServer.dll : fatal error LNK1120: 35 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.
____________________________________
> > > Bei mir gib\'s keine Viren ich hab ne Putzfrau < < <
zenit ist offline   Mit Zitat antworten
Alt 15.10.2002, 08:27   #2
delphirocks
bitte Mailadresse prüfen!
 
Registriert seit: 17.03.2002
Beiträge: 198


Standard

hallo,

Verwendest du eine externe Bibliothek?
sieht aus, als ob ein paar lib files abgehen würden.

du hast wahrscheinlich zwar alle header, nicht aber die dazugehörigen libs angegeben...

Unter:
Project/Settings/Link->Object/Library Modules das .lib file eintragen,
unter tools/options/directories/library files das verzeichnis einstellen...

g
delphirocks ist offline   Mit Zitat antworten
Alt 15.10.2002, 09:11   #3
irrsinn
Veteran
 
Registriert seit: 05.04.2002
Beiträge: 331


Standard

wenns erst NACH dem absturz aufgetreten is, schau ob sich das visual studio die einstellungen in der projektdatei gemerkt hat. wenn nicht probier das letzte, was du vor dem absturz geändert hast noch einmal
____________________________________
Wenn es dumm ist aber funktioniert, ist es nicht dumm!
irrsinn ist offline   Mit Zitat antworten
Alt 15.10.2002, 09:21   #4
zenit
Jr. Member
 
Registriert seit: 17.05.2001
Alter: 52
Beiträge: 80


Standard

Erleuterung:

Ich bin seit 01.10.02 in der Firma (als Java Entwickler) und sitze seit diesem Tag an einem bestehenden VC++ Programm, das vor 3 Jahren von einem nicht mehr vorhandenen Mitarbeiter geschrieben wurde.
Dieses Prog. wurde mittlerweile von 2 weiteren Programmierern verändert.
Es existiert praktisch keine Inline-Doku (ausser so Kommentare wie "Diese Schleife könnte ... machen").
Ich bin der einzige im Unternehmen, der VC schon mal programmiert hat, kann somit keinen anderen um Rat fragen.
Weiters kann mir keiner schlüssig sagen was das Programm genau macht bzw. wie (Ablauf, Abhängigkeiten,...)

Das ganze besteht aus mehreren SW-Einzelprojekten (Anzahl unbekannt) und erstreckt sich von HW-naher Programmierung (SPS-Schnittstelle) über DB-Anbindung (Progress), Treiberdateien von Drittanbietern bis hin zur GUI.

Der ursprüngliche Fehler den es zu finden gab, war der, dass die SW unzyklisch die abzufragenden Maschinen abschaltet und wieder hochfährt.

Nachdem ich eine testreife geänderte Version beisammen hatte, die mir zumindest mal die Info ausgibt, wann durch welchen Funktionsaufruf welche Maschine abgeschaltet wird, hängt sich doch glatt meine PC-Mühle auf.

Und nun habe ich oben beschriebenes Problem.

Die einzige .lib die ich gefunden habe, habe ich (so wie auch alle header) in einen eigenen Ordner gegeben und diesen auch angegeben damit der Linker dort sucht.


Leider erfolglos!

Ich kann nicht mal mit Sicherheit sagen, ob diese .lib die einzige ist, oder obs mehr gibt und die einfach nur verloren gegangen ist...

*verzweifel*

G
____________________________________
> > > Bei mir gib\'s keine Viren ich hab ne Putzfrau < < <
zenit ist offline   Mit Zitat antworten
Alt 15.10.2002, 09:25   #5
irrsinn
Veteran
 
Registriert seit: 05.04.2002
Beiträge: 331


Standard

gibts in deiner firma sowas wie sourcesafe? vielleicht kannst da nachschaun, welche libs alle da sein sollten - falls das wirklich so ein gravierender absturz war und das problem nicht ganz wo anders liegt.
____________________________________
Wenn es dumm ist aber funktioniert, ist es nicht dumm!
irrsinn ist offline   Mit Zitat antworten
Alt 15.10.2002, 13:23   #6
zenit
Jr. Member
 
Registriert seit: 17.05.2001
Alter: 52
Beiträge: 80


Standard

Als ich den source bekommen habe, hab ich noch gefragt, ob ich mir eine Kopie machen soll.

Antwort: nö

Nun hat sich rausgestellt, dass ich die ganze Zeit am Orig. gearbeitet habe (einzige Version).

Gibt es in VC sowas wie in Java?
Da kann ich ja auch aus nem .jar File die .class und .java Dateien reproduzieren.

G
____________________________________
> > > Bei mir gib\'s keine Viren ich hab ne Putzfrau < < <
zenit ist offline   Mit Zitat antworten
Alt 15.10.2002, 13:54   #7
irrsinn
Veteran
 
Registriert seit: 05.04.2002
Beiträge: 331


Standard

glaub ich nicht. das maximale was du zurückgewinnen kannst (wenns ein release compile dh ohne debug info ist) is assembler code.

da stehn deine chancen nicht gut
____________________________________
Wenn es dumm ist aber funktioniert, ist es nicht dumm!
irrsinn ist offline   Mit Zitat antworten
Alt 15.10.2002, 13:56   #8
irrsinn
Veteran
 
Registriert seit: 05.04.2002
Beiträge: 331


Standard

aber du kannst schaun, in welchen files die gesuchten symbole stehen. dann kannst dir die build targets der symbole anschaun also ob sie direkt in die exe kommen oder eben ein .lib file produzieren, das statisch dazugelinkt wird.

harte knochenarbeit, aber müsst funktionieren. und dann kennst das projekt wenigstens in und auswendig
____________________________________
Wenn es dumm ist aber funktioniert, ist es nicht dumm!
irrsinn ist offline   Mit Zitat antworten
Alt 15.10.2002, 14:02   #9
Gomberl
Jr. Member
 
Registriert seit: 26.11.2000
Beiträge: 22


Gomberl eine Nachricht über ICQ schicken
Standard

du kannst aus keinem jar archiv die java files reproduzieren
jar ist ein kompressionsverfahren und zwar eigentlich genau dasselbe wie zip
du kannst nur java dateien extrahieren wenn sie mitgeliefert sind

zu deinem problem:

ich werds mal einfach ausdruecken:
es haengt nicht mit den headern zusammen
header sind dazu da beim compile vorgang symbole bereitzustellen damit der compiler deine selbst geschriebenen funktionen checken kann

der linker demgegenueber loest diese symbole auf und ersetzt sie durch die sprung adressen der tatsaechlichen symbole welche sich in exe files oder output files des VC++ Compilers befinden (was auch eine libary sein kann)

es sind verschieden symbole beim linker zu sehen wie CMilacronFile
versuch durch deine sourcen zu suchen und diese symbole zu finden
fuege diese files dem projekt hinzu und versuch alles neu zu uebersetzen

btw CMilacronFile ist nicht MFC ... glaub ich ... also sollte es entweder eine firmeninterne libary sein (zu der ihr die sourcen haben solltet) oder ein paar files in deinem projekt sein

versuch mal alles neu zu uebersetzen .. alles was du findest

gomberl

ps; kleiner tip -> kopien macht man immer ... sicher ist sicher .. das kenn ich auch schon
pss: guter tip zum suchen und editieren von sourcecodes ist EditPlus ein gutes tool
Gomberl ist offline   Mit Zitat antworten
Alt 15.10.2002, 16:18   #10
zenit
Jr. Member
 
Registriert seit: 17.05.2001
Alter: 52
Beiträge: 80


Standard

1)
Also, soweit ich das bisher sehe, stehen mir 5 zusammengehörige Projekte zur Verfügung (ohne DB):

calculator -> .exe
cmserver -> .exe
hardlock -> .??? (Tongel)
milacronDriver -> .exe
MsgServer -> .dll

Calculator,hardlock und milacronDriver kann ich fehlerfrei erstellen.
Calculator und milacronDriver auch ausführen.
Erstelle ich das MsgServer bekomme ich die euch schon bekannten Fehler.
Beim cmserver diese: Siehe Anhang

Ausserdem erhalte ich die (ebenfalls im Anhang ersichtliche) Meldung, dass die cmserver.exe nicht vorhanden ist und ob sie erstellt werden soll. Nach bejahen fährt er mit Fehlern fort. .exe wird keine erzeugt.

2)
Meint Ihr mit Symbolen die Bezeichnungen meiner .cpp und .h files
(wie zB.: CMilacronFile, MainFrm, Server,...)?

Wenn ja, denen lauf' ich schon seit 2 Tagen nach. Sowohl die Funktionen, die der Linker sucht, als auch die Objekte in denen diese enthalten sein sollen sind vorhanden aber er findet sie einfach nicht.
Ich hab auch schon ein globales header Verzeichnis angelegt, und noch dazu explizit alle Verzeichnisse angegeben, in denen irgenwelche header Files liegen (Daher wohl auch der lnk2005). No Result

Hab auch ein globales .lib Verzeichnis angelegt. Detto

3)
Verständnisfrage: .cpp wird .obj, .obj enthält F-Aufrufe von F in anderen .obj, Linker sucht die Verbindung und (in meinem Fall) kapituliert.

G
____________________________________
> > > Bei mir gib\'s keine Viren ich hab ne Putzfrau < < <
zenit ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:26 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag