VC++ COM Использовать библиотеку типов приложения
но в class view проекта нет новых типовПрограмма под MFC? Попробуй импортировать библиотеку типов через class wizard.
(Я создавал ATL проект)
Как идея, может нужны специальные атрибуты при импорте библиотеки?
Я попробовал несколько комбинаций, видимых изменений не заметил...
Как идея, может нужны специальные атрибуты при импорте библиотеки?Ты писал no_namespace? Что будет, если написать? Может быть, IApplication определён в нескольких местах?
конфликтуют имена типов( IApplication распространенное название)
интерфейсы из typelib скорее всего экспортируется в каком-нибудь namespace
соответственно VS при подсказках показывает один тип, а при компиляции подхватывается другой.
решение: аккуратно проверить под какими именами с какими namespace-ами экспортируется typelib
без видимых изменений.
В оригинальном проекте ещё добавлялся файлик comsvcs.h и соответственно comsvcs.lib прописывался где-то в настройках проекта - может он имеет принципиальную важность?
хотя мне он не помог
ну чтож, буду долбиться =)
ну чтож, буду долбиться =)Поищи, где вообще определён IApplication, текстовым поиском по всему проекту.
go to definition на IApplicationPtr например выкидывает в CCA.tlh и хз сколько ещё файлов реально подключены к проекту но не видны в solution explorer...
Ладно, разберусь, направление понятно, спасибо большое.
А как по всему проекту поискать?Far Manager'ом
подключены к проекту но не видны в solution explorer#import "..." создает 2 файла
Это файл .tlh, содержащий описание классов, и файл .tli, который содержит реализацию членов классов
(не совсем понял, как этот тип получается из IApplication, как-то так:Это объявление эквивалентно следующему:
_COM_SMARTPTR_TYPEDEF(IApplication, __uuidof(IApplication;)
typedef _com_ptr_t<IApplication,&__uuidof(IApplication)> IApplicationPtr;
когда набираешь app_CCA->а GetLine точно член IApplication?
даже выскакивает подсказка со всеми нужными функциями, которые я и хочу использовать, однако если попытаться вызвать любую из этих функций, например
app_CCA->GetLine;
то вылезает ошибка
error C2039: 'GetLine' : is not a member of 'IApplication'
ведь у _com_ptr_t есть метод
IApplication* operator-> const throw(_com_error);
Оставить комментарий
stm7893611
Появилось задание разобраться в чужой библиотеке и подправить чуток, в итоге перечитал пару статей по COM но встал на одном моменте:не получается воспользоваться type library другого приложения
Подключаю библиотеку типов следующим образом:
#import "c:\projects\rgb\rgb.siebelcti\CCAconnect2\CCA.tlb"
создает tlh файл в папке debug, но в class view проекта нет новых типов.
Если же попытаться использовать например тип
IApplicationPtr app_CCA;
(не совсем понял, как этот тип получается из IApplication, как-то так:
_COM_SMARTPTR_TYPEDEF(IApplication, __uuidof(IApplication;)
так вот в этом случае всё работает, и даже работает
HRESULT hr = app_CCA.CreateInstance("CCA.Application");
что вызывает загрузку приложения при загрузке самой библиотеки
когда набираешь app_CCA->
даже выскакивает подсказка со всеми нужными функциями, которые я и хочу использовать, однако если попытаться вызвать любую из этих функций, например
app_CCA->GetLine;
то вылезает ошибка
error C2039: 'GetLine' : is not a member of 'IApplication'
Пробовал подключать tlh файл к проекту - не помогает.