![]() |
BCB: Was macht der Linker falsch?
Moin,
ich habe mal versucht, den BCB6 auf einen neuen PC zu installieren. Das geht, inklusive ServicePack4 und neuen Ilink32 (darauf werde ich noch in einem anderen Thread hinweisen) ganz gut. Bei der Installation des Alphacontrols-Package bekomme ich Linker-Fehler, von denen ich gerne wissen würde, wie sie entstehen. z.B.
Code:
Sehe ich mir die sInternalskins.pas an, wird dort tatsächlich NormalDir verwendet allerdings wird dort ein String übergeben. Das könnte der Fehler schon sein. Merkwürdig finde ich aber auch, dass in der Acutils.pas
[Linker Error] Unresolved external '__fastcall Acutils::NormalDir(const System::WideString)' referenced from SINTERNALSKINS.OBJ
Delphi-Quellcode:
steht, in der eben bei der Package-Installation erzeugten Acutils.hpp dann
function NormalDir(const DirName: ACString): ACString;
Code:
steht.
extern PACKAGE WideString __fastcall NormalDir(const WideString DirName);
Ist dieser hpp-Eintrag mit WideString durch eine Referenz auf ACString verursacht? Ein wenig Klarheit würde mir sehr helfen. Danke, Messie |
Re: BCB: Was macht der Linker falsch?
Wie lautet denn die Definition von ACString?
|
Re: BCB: Was macht der Linker falsch?
bei mir kam auch immer ein LINKER-ERROR(der selbe wie oben). dieser kam jedoch nur, wenn ich die projektdateien verschoben habe. als ich mein BCB geupdated habe, war dieses problem behoben.
|
Re: BCB: Was macht der Linker falsch?
Die Definition von ACString habe ich noch nicht gefunden (noch kein Delphi installiert).
Projektdateien habe ich noch gar keine in Gebrauch, bin noch mit dem nackten BCB zugange. Grüße, Messie |
Re: BCB: Was macht der Linker falsch?
die Meldung sagt doch alles. Die extern declaration ist vorhanden aber die Implementation wird nicht gefunden. Sowas tritt eigentlich immer dann auf wenn die entsprechenden C-Dateien nicht mit gelinkt werden und somit die implementation nicht gefunden wird.
|
Re: BCB: Was macht der Linker falsch?
Bzw. einfach nur die entsprechende .LIB Datei nicht ins Projekt gezogen wurde...
|
Re: BCB: Was macht der Linker falsch?
Zitat:
Vielleicht kannst Du Deine Aussage ein wenig auf die verwendten Mechanismen bezogen erklären. Grüße, Messie OT: wir brauchen dringend noch ein :wiejetzt:, der genauso dumm guckt wie ich eben... |
Re: BCB: Was macht der Linker falsch?
Wenn du die Pascal Quellen direkt einbindest und keine LIB dazu hast, dann muss der LIB Suchpfad mit auf das Verzeichnis gesetzt werden, wo auch die OBJ liegen. Wenn du aber eine LIB Datei mit den Pascal quellen hast, dann ziehe diese .LIB per Drag & Drop vom Explorer auf das Projekt im Projektmanager, um es hinzu zu fügen.
Compiler hat alles geschluckt, nur sucht nun der Linker nach dem Kompilat mit der Funktion, somit gib ihm entweder die .OBJ oder die .LIB (welche die einzelnen OBJ beinhaltet). |
Re: BCB: Was macht der Linker falsch?
Ich wollte das Ergebnis hier noch nachtragen:
Der mit BCB6 BCB X gelieferte Linker (ilink32.exe und ilink32.dll) ist fehlerhaft und muss durch ein Update ersetzt werden. Der Fehler tritt erst dann auf, wenn eine bestimmte Anzahl von gelinkten Komponenten überschritten wird. Dann geht gar nix mehr. Das wäre nicht so ein Problem, wenn das nur die Projekte betreffen würde. Üblicherweise überschreitet man die Grenze aber bei Kompilieren und Installieren von Komponenten zum ersten Mal. Bei mir führte das dazu, dass die aufeinander aufbauenden Kompos (meist mit den TntTools unter der Haube) durch neues, fehlerhaftes Linken komplett Schrott waren. Also auch das Deinstallieren der zuletzt installierten Kompo hilft da nicht. Ich habe beim Suchen keine Erklärung der Zusammenhänge gefunden und wollte das einfach nochmal dokumentieren. Vielleicht trägt noch jemand die Links zu den Artikeln nach... Grüße, Messie |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz