Могу ли я использовать библиотеку WRL в C ++ в качестве замены ATL для написания COM-компонента? И если да, смогу ли я использовать его на старых настольных системах Windows, таких как Windows XP?
Я почти уверен, что ответ на первый вопрос положительный, так как я нашел этот урок на MSDN:
http://msdn.microsoft.com/en-us/library/jj822931.aspx
но как насчет систем не-Windows 8?
Ну, конечно, вы можете. Вы можете написать COM-сервер в чистом коде C ++ без каких-либо вспомогательных классов. Вы можете написать один на C, если вы действительно хотите, хотя это нарушение Женевской конвенции о правах программиста в большинстве юрисдикций.
Что, вероятно, не так заметно, это то, что отсутствует. WRL просто не облегчает написание сервера. Или поддерживать это. Что вы пропустите:
<comutil.h>
тем не мение.И целая куча мелочей, которые не стоит упоминать, такие как апартаменты, ActiveX, агрегация, информация об ошибках и т. Д. Больно, когда вам это нужно. Возможное преимущество WRL состоит в том, что там меньше мистического клея, у ATL его достаточно, что значительно повышает уровень абстракции. Это было сделано намеренно, но этому нужно научиться. Конечно, нет ничего, когда вы используете чистый C ++, хотя вы должны сами писать слишком много.
Да. Вы можете написать стандартный компонент COM.
Eсть образец для этого прямо в документах.
И нет: такой компонент COM будет работать только в Windows 8 и более поздних версиях …