ltdl do it. On win32 I'm using ltdl even the it considers my DLLs to NOT be a libtool archive, and it's making the symbol name transformation mess up. If I do it myself, I can avoid this.
DeviceInterface, and the main code talks to the devices using virtual methods of Device Interface.