However, you should define a plugin convention: which names (for
extern "C" C++ functions inside plugins) are used, with which signatures, in what order, etc.
For example, you could decide that every plugin should have a function
extern "C" void my_plugin_init(void); which your program would run (after having
dlsym-ed it) when loading a plugin, etc...