This section discusses the functionality of the (autoload) library shlib.pl, providing an interface to shared libraries. This library can only be used if the prolog-flag open_shared_object is enabled.
If the library can be loaded, the function called Entry will be called without arguments. The return value of the function is ignored.
The Entry function will normally call PL_register_foreign to declare functions in the library as foreign predicates. load_foreign_library1+Lib Equivalent to load_foreign_library2. For the entry-point, this function first identifies the `base-name' of the library, which is defined to be the file-name with path nor extension. It will then try the entry-point install-base. On failure it will try to function install(). Otherwise no install function will be called. unload_foreign_library1+Lib If the foreign library defines the function uninstall_base() or uninstall(), this function will be called without arguments and its return value is ignored. Next, abolish2 is used to remove all known foreign predicates defined in the library. Finally the library itself is detached from the process. current_foreign_library2-Lib, -Predicates Query the currently loaded foreign libraries and their predicates. Predicates is a list with elements of the form Module:Head, indicating the predicates installed with PL_register_foreign when the entry-point of the library was called.
msgbox connects a Windows message-box using a foreign function. This example was tested using Windows NT and Microsoft Visual C++ 2.0.