(VCL) RTL - Bibliotheken Statisch Linken
-
Danke für die schnelle Antwort.
Ja, ich verwende DLLs. memmgr.lib wird gelinkt und borlnd2mm.dll ist dabei.
Ich habe damit experimentiert, die TForm-Klassen in einer DLL auszulagern und dabei bemerkt, dass der Linker-Fehler nur dort auftritt, wo Forms enthalten sind und die statischen Bibliotheken gelinkt werden.
Wie gesagt, die Fehlermeldungen kommen nicht, wenn ich die dynamische Version der RTL verwende.
Beim Debuggen erscheinen Zugriffe auf nicht initialisierte Speicherbereiche bei Aufrufen der STL.
Seit dem ich versuche die Dynamische RTL zu umgehen, stürzt BDS immer häufiger ab mit nicht nicht aufschlussreichen
Fehlermeldungen:"Zu wenig Arbeitsspeicher" Bei 20% Auslastung, neu starten.
"*.OBJ nicht gefunden" Neu starten.
"Zugriffsverletzung: Link Beendet." Neu starten.
Oder direkt ein Speicherzugriffsfehler beim Linken.
Das Programmieren wird dadurch natürlich sehr anstrengend.Nun einige Fragen:
Liege ich denn grundsätzlich richtig mit der Annahme, dass die statische RTL mit den Dateien vcl.lib, vclx.lib, rtl.lib, dbrtl.lib und vcldb.lib eingebunden wird? Ich gehe davon aus, dass beim Linken mit DLL-Projekten nur die Referenzen aufgelöst werden, da sich die Dateigröße der DLL im Gegensatz zur EXE kaum vergrößert.
Fehlen mir eventuell einige Definitionen in der *.bdsproj-Datei?
Ich besitze nur eine Version von Borland Developer Studio 2006. Woher bekomme ich die alternative ilink32.exe?
-
Hat denn noch niemand probiert seine Anwendungen auf einem anderen Rechner auszuführen? Wenn doch müssten meine Fragen doch beantwortet werden können...
-
Meine Anwendungen laufen auf einigen anderen Rechnern ohne Probleme. Deswegen sagte ich schon, dass dein Problem im Code liegen kann und nicht in der Art des Linkens.
-
Gut, kann ja sein. Wenn du dynamisch linkst, brauchst du halt alle DLLs für die RTL und Packages. Ich möchte aber statisch linken. Bestimmt hat das hier jemand schonmal versucht. Wichtig sind die VCL Bibliotheken!
-
Ich linke immer statisch.
-
Bidius schrieb:
D
Ich besitze nur eine Version von Borland Developer Studio 2006. Woher bekomme ich die alternative ilink32.exe?evtl. hier her?
http://cc.codegear.com/item/25694
Falls du das wirklich probieren willst.
-
Danke, werd ich gleich ausprobieren.
Braunstein schrieb:
Ich linke immer statisch.
Meine Anwendungen laufen auf einigen anderen Rechnern ohne Probleme.kannst du mal posten, welche Bibliotheken du linkst? Bei mir funktioniert es zwar jetzt, aber ich entwickle wieder mit der dynamischen RTL. Wenn ich statisch linke, brauche ich einige Neustarts bis es läuft. Ich habe noch eine BDS-Version auf DVD, ich nehme an das ist die gleiche, aber ich werde mal ausprobieren ob es damit besser läuft.
-
Bidius schrieb:
Woher bekomme ich die alternative ilink32.exe?
Erwirb C++Builder 2009.
-
OK, die ilink.exe habe ich von einer Trial vom RAD Studio 2007. Das BDS von DVD neu zu installieren war eine sehr schlechte Idee. Nach vergeblichen Versuchen die .NET Pakete neu zu installieren blieb nur noch die Sicheheitskopie meiner Systempartition.
@Braunstein/all: Kann man mir bitte meine Frage zu den Bibliotheken (11:25:14 07.10.2008) beantworten?
-
Ich habe dazu schon was gesagt.
Ich nutze selber immer statisch gelinkte Bibliotheken (auch in den dlls) und habe die von dir genannten Probleme noch nicht gehabt. Ich exportiere aber auch keine Klassen aus der dll heraus. Da ist dann alles sauber gekapselt.
Dies alles unetr BCB5 und BCB2007.
-
@Braunstein: Also ich linke folgende Bibliotheken: vcl.lib, vclx.lib, rtl.lib, dbrtl.lib und vcldb.lib, kannst du mir sagen, welche du davon auch linkst?
Wäre aber auch sehr nett, wenn du mal eine entsprechende bdsproj-Datei postest.
-
Ich habe die rtl.lib, vcl.lib, vclx.lib plus einer Menge Komponentenbibliotheken gelinkt. Die Datenbanksachen brauchte ich da nicht.
-
Gut, dann habe ich das richtig gemacht. Vielen dank an alle, ihr habt mir wirklich sehr geholfen!!!