Linker Fehler, ich bin am verzweifeln ...
-
Also wenn ich das Form wieder rausnehme bleibt der Fehler.
Ich denke, das es ein Fehler des Compilers oder der Entwicklungsumgebung ist.
Hab mal gegoogelt, aber nix gefunden, was interessant wäre.Benutze den Borland C++ Builder 5 Enterprise mit Update Pack 1.
-
ok, dann wäre das nächste dass du mal ein bisschen Code ins Forum schaufelst, damit man sich das ganze mal genau anschaun kann.
ansonsten ist's schwer was zu sagen.
PS: hast du die includes usw. auch rausgenommen??
-
ist nett gemeint, aber hilft nichts :
Habe gerade irgendwo gelesen, das es ein Bug des CBuilders ist.
Habe __linkproc__ intover bei Google eingegeben und da habe ich paar interessante Seiten gefunden. Helfen können die mir aber leider auch nicht.Code würde wenig Sinn machen, denke ich ...
-
Ja, das ist scheinbar wirklich ein BCB-Bug. Hatte ich auch mal.
Hier hat jemand eine Lösung beschrieben:
http://groups.google.de/group/borland.public.cppbuilder.ide/browse_frm/thread/f01602017ccd603e/5962ac82d7a24323?lnk=st&q=intover&rnum=1&hl=de#5962ac82d7a24323
(2. Post)
-
Guten Tag zusammen,
das "alte" Problem des C++ Builders 5 habe ich auch teilweise in meinen Projekten.
Der in google groups beschriebene Workaround hat mir teilweise geholfen.
Kurzum. Es scheint ein Bug im Linker zu sein, der bei einem Überlauf eine intover Funktion sucht.[Linker Fehler] Unresolved external '__linkproc__ intover' referenced from .....xyz.OBJ
Bei google groups (und vielen anderen Links im Netz) ist beschrieben, man solle eine intover.obj Datei erzeugen und diese dem Projekt hinzufügen.
Dannn lässt sich mein Projekt compilieren und linken aber es kommt dann an total blöden Stellen im Projekt völlig unsinnig eine Gleitkommadivionsmeldung (Divison durch 0).
z.B. an dieser Stelle:
double abc = 5.2; double def = 9.1; double xxx = abc / def; // *
Das Programm steigt an der mit * gezeichneten Stelle aus. Völlig sinnlos da dort sicher der richtige Wert steht (der Debugger gibt für def auch die 9,1 aus).
Das Problem ist weg, wenn ich die intover.obj Datei wieder entferne.
Hat jemand ein Tipp?Das ganze tritt bei mir an verschiedenen Projekten (v.a. großen) immer wieder auf. Reinstall Windows hat das Problem nicht gelöst.
Gruß
Jürgen
-
jf_stgt schrieb:
Hat jemand ein Tipp?
Ich erinnere mich, daß ein derartiges Problem bereits früher im Zusammenhang mit C++Builder 5 auftauchte. Allem Anschein nach wurde das Problem in nachfolgenden Versionen behoben. Daher mein Ratschlag: migriere das Projekt auf eine neuere Version, anstatt den Linker dieses immerhin neun Jahre alten Produktes mit schwer durchschaubaren und fragilen Tricks zum Kooperieren zu bewegen.
-
Wenn es am Linker liegt, warum dann nicht die ilink32.exe im bin Verzeichnis durch eine neuere Version (vom kostenlosen Turbo C++) ersetzen?
Bevor man sich eine sonst nicht benötigte neue Version kaufen muß.
-
Das ist eine Option, obgleich ich nicht weiß, ob das auch für IDE-Builds funktioniert, da C++Builder <=6 meines Wissens den DLL-Linker ILINK32.DLL benutzt, C++Builder >=2006 jedoch ILINK32.EXE verwendet und den DLL-Linker gar nicht mehr mitliefert. Außerdem besteht beim Kombinieren eines neueren Linkers mit älteren Objektdateien die Gefahr, auf überaus häßliche Probleme zu stoßen.
-
audacia schrieb:
Das ist eine Option, obgleich ich nicht weiß, ob das auch für IDE-Builds funktioniert, da C++Builder <=6 meines Wissens den DLL-Linker ILINK32.DLL benutzt, C++Builder >=2006 jedoch ILINK32.EXE verwendet und den DLL-Linker gar nicht mehr mitliefert. Außerdem besteht beim Kombinieren eines neueren Linkers mit älteren Objektdateien die Gefahr, auf überaus häßliche Probleme zu stoßen.
So ist es. Ich habe in meinem C++ Builder 5 tatsächlich nur die ILINK32.DLL.
Ich habe schon den C++ Builder 2007 und dort nur die ILINK32.EXE.
Dann werde ich mein Projekt wohl auf die neue Version migrieren müssen.
Leider ist das für manche Komponenten sehr aufwendig da die Projektdateien der Komponenten nicht so einfach ladbar sind.
-
Ich habe in meinem Verzeichnis die ilink32.exe und die ilink32.dll.
Und dieser Beitrag von audacia:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-221376-and-start-is-33.html
deutet darauf hin, daß es funktionieren könnte.
-
W. Posur schrieb:
Ich habe in meinem Verzeichnis die ilink32.exe und die ilink32.dll.
Und dieser Beitrag von audacia:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-221376-and-start-is-33.html
deutet darauf hin, daß es funktionieren könnte.Es geht vermutlich um folgendes Statement:
audacia schrieb:
Hast du möglicherweise Zugriff auf einen etwas aktuelleren C++Builder? In allen Folgeversionen, auch in C++BuilderX, wurden eine Menge Linkerfehler behoben. Du mußt dein Projekt auch gar nicht gleich vollständig migrieren; es sollte reichen, wenn du die ilink32.exe des C++Builder 5 sicherst und durch die aktuellere Version ersetzt.
Da war ich mir der Existenz von ilink32.dll nicht bewußt (ich besitze C++Builder 5 nicht). Zwischenzeitlich hatte ich dasselbe mal in C++Builder 6 getestet, woraufhin ich feststellte, daß es aus genanntem Grunde nicht wunschgemäß funktionieren konnte. Da sich ilink32.dll auch bereits in C++Builder 1 befand, nahm ich an, daß auch C++Builder 5 diese benutzt.
Dem C++Builder 6 ist ein Tool namens BPR2MAK beigelegt, mit dem aus einer Projektdatei ein Makefile erstellt werden kann. Wenn die Anwendung aus der Kommandozeile anhand des Makefiles kompiliert wird, werden die Kommandozeilentools (also bcc32.exe und ilink32.exe) anstelle der DLL-Varianten (comp32x/p.dll und ilink32.dll) verwendet. Damit könntest du testen, ob der Fehler möglicherweise mit einer neueren Linker-Version verschwindet. Jedoch ist das kein langfristig tauglicher Workaround.