TLB для EXE сервера.
От: svpout  
Дата: 14.04.03 17:24
Оценка:
Я строю SINK объект (EXEServer2), который получает Fire от
(EXEServer).
Делаю все согласно статье ("Как подключиться к событиям COM-объекта на С++" Автор: В.Чистяков)
Для описания
public IDispEventImpl<0,CExeServer,&DIID__IExternalStateEvents,
&LIBID_EXESERVER2Lib,1,0>
требуются DIID,....
Возникла проблема с подключением tlb файла.
Строка
#import "EXEServer2.tlb" no_namespace, named_guids, no_implementation,raw_interfaces_only, raw_dispinterfaces,raw_native_types
вызывает странную ошибку
fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', line 1794)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
Все советы, которые предлагает MSDN для ее исправления не помогли.
Пробовал подключать обычный .h и _i.c, но постоянно ошибка с повторным объявлением переменных.
В конце, вроде, подключил, так компилятор ругнулся, что
invalid address of static variable 'DIID__IExternalStateEvents'
что-то я вообще ничего не понимаю по умолчанию в IDispEventImpl это
значение вообще равно &IID_NULL.
У меня EXEServer имеет 3 Firа я лювлю EXEServer2 только 2-ой.Соответственно
описываю функцию и определяю синк карту только для второго.
Подскажите пожалуйста, как подключить как быть?
p.s. Попробывал 1 интерфейс 1 Fire. Все работает. Неужели дело в этом?
Re: TLB для EXE сервера.
От: Аноним  
Дата: 05.05.03 17:29
Оценка:
Здравствуйте, svpout, Вы писали:

S> fatal error C1001: INTERNAL COMPILER ERROR

S> (compiler file 'msc1.cpp', line 1794)

У меня такая проблема возникала, когда SDK был установлен, но без сырцов.
После переустановки SDK с исходниками проблема исчезла. Может быть поможет?
Re: TLB для EXE сервера.
От: MaximE Великобритания  
Дата: 05.05.03 19:08
Оценка:
Здравствуйте, svpout, Вы писали:

S>Строка

S>#import "EXEServer2.tlb" no_namespace, named_guids, no_implementation,raw_interfaces_only, raw_dispinterfaces,raw_native_types
S>вызывает странную ошибку

Попробуй без no_namespace:

#import "EXEServer2.tlb" named_guids, no_implementation, raw_interfaces_only, raw_dispinterfaces, raw_native_types
using namespace MyNameSpace; // подставь вместо MyNameSpace имя из *.tlh
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.