Avoiding system versions
If evolution is installed on your system it is likely that system DBus services such as evolution-addressbook-factory.
These should be replaced by the versions from your install $PREFIX by editing the DBus .service files in /usr/share/dbus-1/services/org.gnome.evolution.dataserver.*.service.
Registering the plugin libraries
Each library built for the plugin must provide entry and exit points to the module which register the modules types.
G_MODULE_EXPORT void e_module_load (GTypeModule *type_module) { /* This registers our extension class with the GObject * type system. An instance of our extension class is paired * with each instance of the class we're extending. */ extension_foo_register_type (type_module); } G_MODULE_EXPORT void e_module_unload (GTypeModule *type_module) { /* This function is usually left empty. */ }
The foo_register_type() function produced by the GType is static so you may have to provide an externally visible function if you need to register multiple types.
Registering a provider
A provider can be created by subclassing the CamelProvider class.
Details on this can be seen at Evolution/Camel.Provider.