Below is a very simple example of a Static Link Library (SLL). This SLL unit module contains only one function that converts millimeters to inches.
#COMPILE SLL "conversion.sll"
FUNCTION MillimetersToInches(BYVAL mm AS DOUBLE) COMMON AS DOUBLE
FUNCTION = mm * 0.03937#
The #COMPILE SLL metastatement tells the compiler to create an SLL named conversion.sll.
By default, all procedures in PowerBASIC are private, which means they cannot be seen outside of the SLL. The COMMON keyword is used on the procedure definition line to indicate that the procedure is to be visible to the host application. If the COMMON keyword is not used in the procedure definition, the procedure will not be visible to the host application. If the MillimetersToInches function did not contain the COMMON keyword any attempt to reference it from a host program would result in a Missing Declaration error when the host program is compiled.
Below is a sample host program that links in the compiled conversion.sll into our program.
FUNCTION PBMAIN () AS LONG
LOCAL Inches AS DOUBLE
LOCAL MilliMeters AS DOUBLE
MilliMeters = 1000.0#
Inches = MillimetersToInches(MilliMeters)
The #LINK metastatement is used to link the pre-compiled conversion.sll into our host program. Any procedure in the SLL that contains the COMMON keyword may be called by our host program. We call the MillimetersToInches function in the SLL just like any other function call.
What is an SLL?
Creating a Static Link Library