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.