#import директива проблемы подсчета ссылок - PullRequest
1 голос
/ 22 мая 2011

Я изучал различные способы вызова COM-компонентов из моего приложения MFC C ++ (VS 2008), и, используя в качестве примера автоматизацию Microsoft Office, я наткнулся на MS KB статья # 196776 (последнее изменение - 13 марта 2008 г.), в котором указано следующее:

Существует три основных способа использования автоматизации: MFC, #import и C / C ++:

  • С MFC используйте Visual C ++ ClassWizard для генерации «классов-оболочек» из библиотек типов Microsoft Office.Эти классы, а также другие классы MFC, такие как COleVariant, COleSafeArray, COleException, упрощают задачи автоматизации.Этот метод обычно рекомендуется по сравнению с другими, и большинство примеров базы знаний Microsoft используют MFC.
  • # import, новая директива, которая стала доступной в Visual C ++ 5.0, создает умный VC ++указатели "из указанной библиотеки типов.Он очень мощный, но часто не рекомендуется из-за проблем со счетом ссылок , которые обычно возникают при использовании с приложениями Microsoft Office.
  • C / C ++ Автоматизация гораздо сложнее, но иногда необходимачтобы избежать накладных расходов с MFC или проблем с #import.По сути, вы работаете с такими API-интерфейсами, как CoCreateInstance (), и COM-интерфейсами, такими как IDispatch и IUnknown.

Я всегда предпочитал использовать #import вместо генерации дополнительных «классов-оболочек», так как этопроще добавлять новые методы, когда COM-сервер был обновлен (и мне не нужно перезапускать ClassWizard), однако теперь я обеспокоен тем, что выбрал неправильный подход, является ли эта проблема подсчетом ссылок специфичным для Microsoft Officeили ко всем компонентам автоматизации COM?Если это относится только к Office, как мне избежать подобных проблем на создаваемых мной COM-серверах?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...