Why not use COM where the interface is compiler and platform independent?

Trying to expose C++ classes is a pain due to name decoration. And the real problem is the decoration could change between compiler versions or even compiler update.

For this to work reliably, you'll need to build the app and the new plugins with the same compiler. I would avoid that situation if I were you.