Kagamin wrote:
Steven Schveighoffer Wrote:

Walter, can you confirm that extern(C++) interfaces are equivalent to inheriting IUnknown? If not, what are the differences?

The difference is COM ABI is standardized, C++ ABI is implementation-defined. 
If you are lucky, you can guess, which ABI is meant by extern(C++).

Well, yes, but C++ itself doesn't have interfaces. A COM interface is basically a MSVC virtual function table. Windows C++ compilers which support it, follow the Microsoft calling conventions, even if they use a different ABI for other classes.

The only problem would be if C++ subsequently defined interfaces (in C++1x) and they were different. I think that's extremely unlikely, since MSVC defines __interface to be a COM interface.

Note that extern(C++) is much more recent than the COM interface hack.

Reply via email to