Externe Bibliotheken sind in Operno "dynamic link libraries", die mit dem objektorientierten System von Operno kompatibel sind.
Jede Bibliothek kann durch den internen Befehl "import" aus der Standard-Library eingebunden und verwendet werden. Dieser Befehl verlangt den Namen der Bibliothek als String. Dabei darf die Extension ".dll" nicht angegeben werden, weil "import" diese selbst automatisch anhängt.
import("mathEx")
'Nun besitzen wir die Funktion für die n-Fakultät:
out math\fak(5) '= 120
Dies ist eine Vorlage, für eine externe Bibliothek:
IncludeFile "Operno.pbi"
;... Functions ...
ProcedureDLL.i InitLibrary()
;Deklarationen von Operno-Objekten
EndProcedure
Eine externe Bibliothek verwendet immer die Quelldatei "Libraries\SDK\Operno.pbi". Sie setzt alle Funktionszeiger (Prototypen) auf die von dem Hauptprogramm (die aktuelle Operno-Instanz) zur Verfügung gestellten Funktionen. Die Adressen der Funktionen werden als Long-Array vom Hauptprogramm an die Bibliothek übergeben (siehe "OpernoGetFunctions").
Hinweis: Für die Array-Elemente wurde deswegen Long als Typ gewählt, weil Operno immer 32-Bit Adressen übergibt. Würde man nun eine Bibliothek mit einem Integer-Array auf einer 64-Bit Rechenarchitektur generieren, so käme es zu kompatiblitätsproblemen.
Die Befehle, die aus dem Hauptprogramm importiert werden, gleichen den Befehlen, die für die umgekehrte Kommunikation (fremdes Programm -> Operno als DLL) verwendet werden. Für Befehlsbeschreibungen siehe PureBasic-API.
"InitLibrary" ist eine öffentliche Funktion, die vom Hauptprogramm direkt nach "OpernoGetFunctions" aufgerufen wird. In dieser Funktion besitzt man die Möglichkeit, seine eigenen Funktionen als Objekte in der jeweiligen Instanz zu definieren, damit man durch Operno-Skripts auf die bereitgestellten Funktionen zugreifen kann.
Ein Beispiel und die Quellcodes der bereits verfügbaren Bibliotheken sind unter "Libraries\SDK" zu finden.