@Ion Todirel: I know you can call COM from C. The problem is not my lack of COM knowledge. The problem is if you try to create, say, a plugin that is supposed to adhere to a C API that does not use COM, then you can't use COM either. I guess no-one in MS ever considered such a use case. Just use COM!!!!

Also, the typical VST convention is to use a single DLL for the plugin, with no installer etc. This is because of the way VSTs are managed by audio applications, etc. When using the managed C++ approach, you end up with at least 2 DLLs. Functional but not ideal. My solution creates a single DLL solution (actually one for 32-bit and one for 64-bit during the post-compile step) that anyone can just copy into their VST folder, then let the audio application scan the VST folder, and it would find it thinking it uses the C VST API.

COM can't possibly enter into this picture. Why do people (and MS in general) still think COM can solve all these types of interop problems?

@contextfree`: Maybe, but it is a cross-platform and very well established C API so there isn't even a chance they will ever make future versions use COM. MS had the "DirectX" COM-based plugin format many years ago, and there was a time when many Windows audio applications supported it. But VST is now the established API with almost no support for DirectX from plugin creators these days.