Проблема следующая:
Есть приложение MFC в виде EXE файла,я пытаюсь сделать его COM-сервером с интерфейсом наследованным от IUnknown. Добавил новый ATL объект,зарегистрил OLE сервер,в OLE View он появился в разделе TypeLib(интерфейс и кокласс появились), но я в упор не вижу его в разделе Interface. Вероятно поэтому в программе-клиенте я не могу вытащить интерфейс ком-сервера, возвращается ошибка E_NOINTERFACE, в чем причина — непонимаю, вероятно это связано с особенностями автоматизации EXE файлов. Помогите !!!!!
Здравствуйте 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, вы писали:
AF>Нужно собрать и зарегистрировать proxy/stub. Type library marshaling работает только для automation compatible интерфейсов, т.е. disp-интерфейсов и dual интерфейсов.
Это не совсем так. Automation-совместимым может быть и интерфейс унаследованный от IUnknown, но в его описании нужно указать oleautomation. Ну, и естественно все типы данных должны быть Automation-совметимыми.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.