Russian Qt Forum

Qt => ActiveX => Тема начата: MadMax от Сентябрь 01, 2010, 21:07



Название: Использование COM объекта из dll
Отправлено: MadMax от Сентябрь 01, 2010, 21:07
Всем добрый день.
Я пишу достаточно простого COM-клиента.
COM-объект реализует достаточно большое кол-во собственных интерфейсов (описания которых нет в стандартных заголовочных файлах).

Я хочу использовать приблизительно следующую конструкцию:

 IMyInterface *interface = 0;

 activeX->queryInterface(IID_IMyInterface, (void **)&interface);
 if (interface) {
     interface->someMethod();
     interface->Release();
 }

Проблема в том, что у меня нет описания IMyInterface и IID_IMyInterface

в msvs для решения этой проблемы есть деректива #import. Я использую Qt 4.6.2 и в этой (по крайней мере в этой) использование этой дерективы приводит к зависанию намертво QtCreator.

Кто сталкивался с такой задачей? Как можно решить эту проблему?


Название: Re: Использование COM объекта из dll
Отправлено: MadMax от Сентябрь 02, 2010, 15:57
Маленькое уточнение. Ничего, кроме dll-ки, которую я хочу использовать, у меня нет.
Решил натравить #import на эту dll-ку в VisualStudio. Я получил .tlh и .tli файлы. Затем попытался импортить их в моем проекте на Qt. Но как ожидалось ничего хорошего из этого не получилось - огромное кол-во ругани (даже на такие вещи как __uuidof).


Название: Re: Использование COM объекта из dll
Отправлено: alex312 от Сентябрь 21, 2010, 19:13
попробуйте сгенерировать интерфейс Qt-шной утилиткой dumpcpp

http://doc.crossplatform.ru/qt/4.4.3/activeqt-dumpcpp.html