Plugin API and ABI
API
The plugin API is defined by
- On Linux and MacOS
-
The file ocpn_plugin.h
- On MSVC Windows
-
ocpn_plugin.h and the opencpn.lib import lib
- On mingw Windows builds
-
ocpn_plugin.h and the libopencpn.dll.a import lib
The API Designation is found in the ocpn_plugin.h file:
#define MY_API_VERSION_MAJOR 1 #define MY_API_VERSION_MINOR 16
The API is intended to be backwards compatible, and has stayed so since at least 10 years.
Unfortunately, the API is more or less undocumented.
Since 5.10 the API files are distributed as part of the opencpn-libs project at https://github.com/opencpn/opencpn-libs.
ABI
The ABI isn not only affected by the API but also by underlying libraries. In particular, updates to wxWidgets has created ABI breaks which has required plugins to be re-compiled
Even if the wxWidgets version has not been changed, the GTK2 → GTK3 transition has also caused ABI breaks on Linux.
On Flatpak, runtime updates will inevitably also create ABI breaks.
Lead Developer: About Plugins & API
The Main program API number is distinct and independent from the OpenCPN Version number. Each released version of OCPN will support a certain PlugIn API. As we progress, we expect the API eventually to stabilize, or at least to evolve more slowly than the main program. This will happen naturally as we fill out the API to include the commonly required Plugin functions.