The shared library loader EPluginLib implements a concrete EPlugin type which loads GNU shared libraries via the GModule api. It simply resolves symbols directly from the loaded shared object and invokes them expecting a function signature of EPluginLibFunc.
To manage plugin lifecycle, the function e_plugin_lib_enable will be invoked which allows the plugin to initialise itself. Its signature should match EPluginLibEnableFunc, and it will be called with enable=1. If the enable function returns non-zero it is assumed to have failed intialisation and will not be invoked further.
The shared library loader only requires one extra parameter in the base plugin definition.
<e-plugin ... type="shlib" location="/full/path/name.so" ... <hook class="..."> ... </e-plugin>
Where a function spec is required in a plugin hook definition, it should simply be the full name of an exported symbol in the shared object.
void * function(ep, data);
EPlugin * ep;
void * data;