Das REQUIRES bei den Packages
und der Laufzeitpackages-String in den Projektoptionen von EXE/
DLL
sagt, welche Packages du verwenden willst.
Wenn ein
Package dort nicht angegeben ist (fehlt), dann wird die
PAS/
DCU direkt gelinkt (einkompiliert).
Bei Packages bekommst eine Warnung, wenn Units doppelt drin sind, in mehr als einem geladenen
Package.
Bei EXE/
DLL mußt es selbst sehen, z.B. am "wurde implizit einkompiliert"-Compilerhinweis, welcher aber nicht kommt, wenn man "explizit" die
Unit mehrfach drin hat. (also in Projektverwaltung, bzw. in der
DPR mit dem "IN")
Unit in zwei DLLs ist geil, vor allem da dann auch die globalen Variablen doppelt sind und jede
DLL (oder die EXE) dann seine eigene Variriable hat.
Oder geh zu Lazarus ... die keinen keine Packages. (das "Package" bei denen ist was Anderes ... ein Projekt für den PackageManager, also was bei uns GetIt ist)
Man muß in
Package ein anderes
Package nicht linken.
Dann werden die Units nicht aus dem anderen
Package gelinkt, sondern direkt einkompiliert.
(drum muß man auch immer zwangsweise das DesignIde-
Package im Requires haben, weil es diese Units nicht einzeln gibt)