Исходная ссылка на объект для объекта автоматизации OLE с конструктором - PullRequest
1 голос
/ 18 ноября 2011

Я пытаюсь подключить библиотеку, которая экспортирует интерфейс, совместимый с Automation, через .TLB.

TLB перечисляет function s внутри интерфейсов для получения ссылок на объекты;.TLH включает их как нестатические функции-члены, что затрудняет мне вызов их без ссылки на объект;таким образом, у меня есть небольшая проблема с курицей и яйцом.

Как правильно вызвать function s из C ++?

1 Ответ

0 голосов
/ 18 ноября 2011

Используйте #import в файле .tlb, затем используйте метод CreateInstance() соответствующего типа интеллектуального указателя для создания экземпляра объекта, а затем просто вызовите функции-члены.

Примерно так (обработка ошибок опущена):

 #import ThatTlbFile.tlb

 //at some point in your code you have to init COM
 CoInitialize(0);

 // once COM is initialized
 IInterfaceOfInterestPtr object;
 // this will ask COM to instantiate an object    
 object.CreateInstance( __uuidof( ComClassOfInterest ) );
 object->CallMethod();
...