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 in the package so the weak linking can work correctly.

A weak unit cannot contain any global variables, an initialization section, or a finalization section.

$WeakPackageUnit has a lot of limitations, and its use is limited. In the few cases where it is needed, though, it is absolutely necessary. If you are not writing packages to sell to other Delphi developers, you don’t need to concern yourself with this directive at all.

See Also

Package Directive
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset