COM сервер из EXE файла не интерфесится
От: Capone  
Дата: 02.08.01 13:57
Оценка:
Проблема следующая:
Есть приложение MFC в виде EXE файла,я пытаюсь сделать его COM-сервером с интерфейсом наследованным от IUnknown. Добавил новый ATL объект,зарегистрил OLE сервер,в OLE View он появился в разделе TypeLib(интерфейс и кокласс появились), но я в упор не вижу его в разделе Interface. Вероятно поэтому в программе-клиенте я не могу вытащить интерфейс ком-сервера, возвращается ошибка E_NOINTERFACE, в чем причина — непонимаю, вероятно это связано с особенностями автоматизации EXE файлов. Помогите !!!!!
Re: COM сервер из EXE файла не интерфесится
От: Alex Fedotov США  
Дата: 02.08.01 14:15
Оценка:
Здравствуйте Capone, вы писали:

C>Проблема следующая:

C>Есть приложение MFC в виде EXE файла,я пытаюсь сделать его COM-сервером с интерфейсом наследованным от IUnknown. Добавил новый ATL объект,зарегистрил OLE сервер,в OLE View он появился в разделе TypeLib(интерфейс и кокласс появились), но я в упор не вижу его в разделе Interface. Вероятно поэтому в программе-клиенте я не могу вытащить интерфейс ком-сервера, возвращается ошибка E_NOINTERFACE, в чем причина — непонимаю, вероятно это связано с особенностями автоматизации EXE файлов. Помогите !!!!!

Нужно собрать и зарегистрировать proxy/stub. Type library marshaling работает только для automation compatible интерфейсов, т.е. disp-интерфейсов и dual интерфейсов.
-- Alex Fedotov
Re[2]: COM сервер из EXE файла не интерфесится
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.08.01 16:22
Оценка:
Здравствуйте Alex Fedotov, вы писали:

AF>Нужно собрать и зарегистрировать proxy/stub. Type library marshaling работает только для automation compatible интерфейсов, т.е. disp-интерфейсов и dual интерфейсов.


Это не совсем так. Automation-совместимым может быть и интерфейс унаследованный от IUnknown, но в его описании нужно указать oleautomation. Ну, и естественно все типы данных должны быть Automation-совметимыми.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.