10 ms·
Also, that code isn't C, it's C++. Method calls are a C++ feature. While you could use COM without language support for method calls, because the ABI is stable,
by pcwalton 8y ago
Also, that code isn't C, it's C++. Method calls are a C++ feature. While you could use COM without language support for method calls, because the ABI is stable, it isn't really something that Microsoft supports.
- teddyuk 8y agoI remember using C to call com components as a learning excercise - it was just that to see how it worked. You wouldn’t do it otherwise
- Iwan-Zotow 8y agoOf course Microsoft supports it, why not? There is no magic in COM, had COM object written in C
- pcwalton 8y agoI don't mean that calling COM objects from C doesn't work. I just mean that COM isn't designed to be used from C.
- tonyedgecombe 8y agoActually I think it was, that was the lowest common denominator.
- pjmlp 7y agoNot really, COM is a subset of OLE 2.0, designed to replace VBX as OCX originally. Naturally OLE was designed as C framework back in Win16 days, with endless pages of boilerplate code. https://www.amazon.com/Windows-Programmers-Guide-Book-Disk/dp/0672302268 https://www.amazon.com/Windows-Programmers-Guide-Book-Disk/d... As such COM can be called from C, specially since C++ Windows compilers have a VTBL layout as if they were a plain old C struct with function pointers. However unless one is masochist, it is not sane to use COM from bare bones C.