Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=5622338&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Tue Apr 12 23:33:23 2016
Кодировка: Windows-1251
VC++ COM Использовать библиотеку типов приложения - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 1
Vadon

Рег.: 29.09.2004
Сообщений: 518
Рейтинг: 436
  VC++ COM Использовать библиотеку типов приложения
      06.01.2007 19:12
 

Появилось задание разобраться в чужой библиотеке и подправить чуток, в итоге перечитал пару статей по 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 файл к проекту - не помогает.


Mike
Ызарг

Рег.: 02.11.2002
Сообщений: 8098
Рейтинг: 2147
  Re: VC++ COM Использовать библиотеку типов приложения [re: Vadon]
      06.01.2007 22:37
 

Quote:

но в class view проекта нет новых типов



Программа под MFC? Попробуй импортировать библиотеку типов через class wizard.

Vadon

Рег.: 29.09.2004
Сообщений: 518
Рейтинг: 436
  Re: VC++ COM Использовать библиотеку типов приложения [re: Mike]
      06.01.2007 22:40
 

Не, не на MFС судя по всему... говорит, что классы MFС можно добавлять только к проектам MFC
(Я создавал ATL проект)

Как идея, может нужны специальные атрибуты при импорте библиотеки?
Я попробовал несколько комбинаций, видимых изменений не заметил...



Редактировал Vadon (06.01.2007 22:47)
Mike
Ызарг

Рег.: 02.11.2002
Сообщений: 8098
Рейтинг: 2147
  Re: VC++ COM Использовать библиотеку типов приложения [re: Vadon]
      06.01.2007 22:50
 

Quote:

Как идея, может нужны специальные атрибуты при импорте библиотеки?



Ты писал no_namespace? Что будет, если написать? Может быть, IApplication определен в нескольких местах?

DarkGrayМодератор
Carpal Tunnel

Рег.: 30.09.2002
Сообщений: 31411
Рейтинг: 8952
  Re: VC++ COM Использовать библиотеку типов приложения [re: Vadon]
      06.01.2007 22:54
 

возможная причина:
конфликтуют имена типов( IApplication распространенное название)

интерфейсы из typelib скорее всего экспортируется в каком-нибудь namespace

соответственно VS при подсказках показывает один тип, а при компиляции подхватывается другой.

решение: аккуратно проверить под какими именами с какими namespace-ами экспортируется typelib

Vadon

Рег.: 29.09.2004
Сообщений: 518
Рейтинг: 436
  Re: VC++ COM Использовать библиотеку типов приложения [re: Mike]
      06.01.2007 23:00
 

#import "c:\projects\rgb\rgb.siebelcti\CCAconnect2\CCA.tlb" no_namespace
без видимых изменений.

В оригинальном проекте еще добавлялся файлик comsvcs.h и соответственно comsvcs.lib прописывался где-то в настройках проекта - может он имеет принципиальную важность?
хотя мне он не помог =((

Vadon

Рег.: 29.09.2004
Сообщений: 518
Рейтинг: 436
  Re: VC++ COM Использовать библиотеку типов приложения [re: DarkGray]
      06.01.2007 23:01
 

ну чтож, буду долбиться =)

Mike
Ызарг

Рег.: 02.11.2002
Сообщений: 8098
Рейтинг: 2147
  Re: VC++ COM Использовать библиотеку типов приложения [re: Vadon]
      06.01.2007 23:18
 

Quote:

ну чтож, буду долбиться =)



Поищи, где вообще определен IApplication, текстовым поиском по всему проекту.

Vadon

Рег.: 29.09.2004
Сообщений: 518
Рейтинг: 436
  Re: VC++ COM Использовать библиотеку типов приложения [re: Mike]
      06.01.2007 23:27
 

А как по всему проекту поискать?

go to definition на IApplicationPtr например выкидывает в CCA.tlh и хз сколько еще файлов реально подключены к проекту но не видны в solution explorer...

Ладно, разберусь, направление понятно, спасибо большое.



Редактировал Vadon (06.01.2007 23:32)
Mike
Ызарг

Рег.: 02.11.2002
Сообщений: 8098
Рейтинг: 2147
  Re: VC++ COM Использовать библиотеку типов приложения [re: Vadon]
      07.01.2007 02:47
 

Quote:

А как по всему проекту поискать?



Far Manager'ом

sidaesc
journeyman

Рег.: 24.04.2006
Сообщений: 94
Рейтинг: 3
  Re: VC++ COM Использовать библиотеку типов приложения [re: Vadon]
      07.01.2007 13:11
 

Quote:

подключены к проекту но не видны в solution explorer



#import "..." создает 2 файла

Это файл .tlh, содержащий описание классов, и файл .tli, который содержит реализацию членов классов

sidaesc
journeyman

Рег.: 24.04.2006
Сообщений: 94
Рейтинг: 3
  Re: VC++ COM Использовать библиотеку типов приложения [re: Vadon]
      07.01.2007 13:18
 

Quote:

(не совсем понял, как этот тип получается из IApplication, как-то так:
_COM_SMARTPTR_TYPEDEF(IApplication, __uuidof(IApplication));)




Это объявление эквивалентно следующему:

typedef _com_ptr_t<IApplication,&__uuidof(IApplication)> IApplicationPtr;

Quote:


когда набираешь app_CCA->
даже выскакивает подсказка со всеми нужными функциями, которые я и хочу использовать, однако если попытаться вызвать любую из этих функций, например
app_CCA->GetLine();

то вылезает ошибка
error C2039: 'GetLine' : is not a member of 'IApplication'




а GetLine точно член IApplication??
ведь у _com_ptr_t есть метод
 IApplication* operator->() const throw(_com_error);



Страницы: 1

Technical >> Development (Archive)

Дополнительная информация
0 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в