Name
$WeakPackageUnit Compiler Directive
Syntax
{$WeakPackageUnit Off}
{$WeakPackageUnit On}Scope
File
Description
Use $WeakPackageUnit
in a unit that is contained in a
package when the following criteria are true:
The package will be used in a variety of applications.
The unit is not used by most of those applications.
The unit requires a DLL that most users do not already have.
Ordinarily, the package requires the DLL because the unit requires it. This means an application that uses the package also requires the DLL. In other words, the application vendor must ship the DLL with the application even though the application does not use the DLL.
$WeakPackageUnit solves this problem by linking
the unit “weakly” with the package. Specifically, the
unit is not actually linked into the package’s
.bpl file. Instead, the unit is contained
entirely in the .dcp file, which usually stores
only the interface part of a unit. If an application does not use the
unit, the unit is not linked with the application, and the
application does not require the unit’s associated DLL. If the
application does use the unit, the unit is linked statically with the
application, and the application requires the unit’s DLL.
If the package contains another unit (Unit2) that
uses the weak unit (Unit1),
Unit2 breaks the “weakness”
constraints. An application that uses the package always links with
Unit2 (because Unit2 is always
in the package), which requires Unit1, which requires the DLL. Thus, a weak unit must stand alone ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access