Orthanc plugins must use the plugin SDK and must be written
in C or C++. They must also fullfil the terms of the GPLv3 license that is
used by the core of Orthanc. Sample code for plugins can be found in
the official Orthanc repository
Plugins/Samples folder). A
tutorial showing how to implement a basic WADO server is available on
We suggest developers to adopt the coding style of the Orthanc core, although this is of course not required.
A plugin takes the form of a shared library (
.DLL under Windows,
.so under GNU/Linux,
.dylib under Apple OS X...) that uses the
ABI of the C language to
declare 4 public functions/symbols:
int32_t OrthancPluginInitialize(OrthancPluginContext* context). This callback function is responsible for initializing the plugin. The
contextargument gives access to the API of Orthanc.
void OrthancPluginFinalize(). This function is responsible for finalizing the plugin, releasing all the allocated resources.
const char* OrthancPluginGetName(). This function must give a name to the plugin.
const char* OrthancPluginGetVersion(). This function must provide the version of the plugin.
Remark: The size of the memory buffers that are exchanged between
the Orthanc core and the plugins must be below 4GB. This is a
consequence of the fact that the Orthanc plugin SDK uses
to encode the size of a memory buffer. We might extend the SDK in
the future to deal with buffers whose size if above 4GB.