2012-08-28 5 views
6

In Embarcadero RAD Studio 2010 gibt es eine Einstellung in den Projektoptionen für statische Bibliotheken mit der Bezeichnung "Dynamic RTL". (Es ist in der TLib Abschnitt.)Was bewirkt die Änderung der Einstellung "Dynamische RTL" für eine statische Bibliothek?

Ich hatte den Eindruck, dass die Entscheidung darüber, ob die RTL dynamisch oder statisch verknüpft wird zur Link-Zeit, nicht zur Kompilierzeit. Aber die statischen Bibliotheken kompilieren nur; Es gibt keinen Verbindungsschritt. Also, wie wirkt sich das Ändern dieser Option auf meine statische Bibliothek aus?

Ich habe einige EXE-und DLL-Projekte, die diese statischen Bibliotheken verwenden, und ich habe die Option "Dynamische RTL" in diesen Projekten. Das macht Sinn, weil sie tatsächlich etwas zu verknüpfen haben, aber ich verstehe nicht, welchen Effekt diese Einstellung auf statische Bibliotheken hat.

Könnte es Probleme verursachen, wenn die statischen Bibliotheken Dynamic RTL = true haben, während die DLLs und EXEs, die diese Bibliotheken verwenden, Dynamic RTL = false haben?

Antwort

6

Ich verwende nicht Embarcadero, sondern eine ältere Version von C++ Builder. Ich denke, sie funktionieren genauso. Wenn Sie Dynamic RTL verwenden, ruft Ihr Code RTL-Funktionen aus den Runtime-DLLs auf, die mit Ihrem Programm geliefert werden sollten. Wenn Sie keine dynamische RTL verwenden, werden die Funktionen von libs in Ihre exe- oder lib-Dateien kopiert. Ich benutze die dynamische RTL reduzieren die Größe von EXE-Dateien. Die Logik ist die gleiche für exe oder libs. Das heißt, wenn Sie dynamische RTL in einem Modul verwenden, sei es eine EXE oder eine Lib, müssen Sie auch die entsprechenden Laufzeit-DLLs liefern.