Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не получается работать с COM библиотекой
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
giker
У меня есть COM библиотека написанная на VS2010. Я использовал утилиту dumpcpp и создал .h и .cpp файлы. Некоторые функции этой библиотеки требуют интерфейсы, которые описаны в этой библиотеке, в качестве параметров. Я могу получить эти интерфейсы, но когда я вызываю эти функции я получаю ошибку
/*
Class1, IClass1, Class2, IClass2 from files generated with dumpcpp
*/
Class1* obj1 = new Class1();
int count = obj1->Count(); // working fine

IClass1* iObj1 = NULL;
obj1->queryInterface(IID_IUnknown, reinterpret_cast<void**>(&iObj1));//working fine

Class2* obj2 = new Class2();
obj2->Init(iObj1); //QAxBase: Error calling IDispatch member Init: Non-optional parameter missing


Если я пытаюсь сделать то же самое в VS2010 (без Qt) то все работает. С одной лишь поправкой что в VS вызываются методы интерфейсов а не классов
IClass1* iboj1
IClass2* iboj2

CoCreateInstance(__uuidof(Class1), NULL, CLSCTX_ALL, __uuidof(IClass1), reinterpret_cast<void**>(&iboj1));
CoCreateInstance(__uuidof(Class2), NULL, CLSCTX_ALL, __uuidof(IClass2), reinterpret_cast<void**>(&iobj2));

iobj2->Init(iobj2);


Когда я пытаюсь делать нечто подобное c использованием QT то это не работает
/*
Class1, IClass1, Class2, IClass2 from files generated with dumpcpp
*/
Class1* obj1 = new Class1();
int count = obj1->Count(); // working fine

IClass1* iObj1 = NULL;
obj1->queryInterface(IID_IUnknown, reinterpret_cast<void**>(&iObj1));//working fine
Class2* obj2 = new Class2();
IClass2* iObj2 = NULL
obj2->queryInterface(IID_IUnknown, reinterpret_cast<void**>(&iObj2));//working fine
iobj2->Init(iObj1); //:-1: error: Exception at 0x759b7199, code: 0xc0000005: read access violation at: 0x0, flags=0x0 (first chance)

Если кто-нибудь знает, подскажите что я делаю не правильно.
Litkevich Yuriy
При работе с Qt какой компиллер используешь?
Студийный или GCC/MinGW?
Если последний, то проблемы будут, он не полностью COM поддерживает.
giker
Использую компилятор Windows SDK for windows 7 (7.1.7600.30154) (x86) и VS2010 Qt библиотеки
Litkevich Yuriy
В местах, где ты написал "working fine" указатель-то инициализируется?
Судя по последующей ошибке один из указателей не был инициализирован функцией queryInterface
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.