Quote:Original post by Yann L
All major plugin based applications require a certain compiler to engineer their plugins. It's part of the SDKs system requirements. As long as everybody adheres to these requirements, everything will work out just fine. Of course, there won't be binary compatibility between an old plugin and a new version of your application/game. But since the slightest modification to your plugin interface in itself will require a recompile anyway, it doesn't make any difference at all.
That's not nessecarily true. For example, Firefox doesn't require a particular compiler/version for their plugins, and in fact all plugins are binary compatible for a given major release (i.e. 2.x, 3.x etc). That's because Firefox uses XPCOM as it's plugin-interface.
Windows explorer extensions are the same, too. Explorer uses COM for it's plugin architecture and so it doesn't require a particular compiler/version either (as long as the compiler you chose can compile COM components).
It depends on the host application. For a game, it's OK to require a particular compiler/version because a game doesn't last especially long on the market (not compared to Windows Explorer, for example). Also, with a game the host application itself doesn't typically get updated all that much. It was quite a pain when Firefox 3.x was first released and we had to wait for all the add-ons to get recompiled for them to work -- imagine if they broke with each minor release as well!
In my personal opinion, a component-based plugin architecture makes more sense than a OO-one anyway (i.e. implementing an interface rather than inheriting from a base class). You can provide a "default" implementation of the interface for your plugin authors to base their work, but I think that would be optional...