Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Интересно, в каких случаях может быть недостаточно простых экспортируемых функций? Они же позволяют передавать между модулями любые данные и даже код…
ИМХО, COM — классический пример оверинжениринга, заставляющий для простейших действий писать тонны маловразумительного кода. Абсолютно везде COM-архитектуру можно было бы заменить обычными DLL, вместо того чтобы городить огород с регистрацией в реестре, GUID'ами, моникерами и COM-серверами.
Если так уж хотелось классовой обёртки, чтобы через "->" можно было к функциям обращаться, то можно было бы сделать классовую обёртку непосредственно в хеадерах, тем более что там и так вся метаинформация ручками набита (спрашивается, на кой вообще придумали IDL, если всё равно инфа дублируется в хеадерах?).
class MyObject: public IUnknown {
//...
}
… это уже COM объект...
так как опять-таки привязана к конкретной платформе (потрудитесь объяснить, почему это «идиотизм»?)
Видимо вы никогда не пытались объектно ориентированную архитектуру экспортировать в ком :)
… Единственная претензия к Майкрософту, что они любят проталкивать свои собственные костыли под видом «стандарта»...

Руководство по созданию ActiveX-контролов на C++ с помощью ATL