Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > IID интерфейса |
Автор: automax 27.5.2004, 22:15 |
Здравствуйте! Мне нужно создать COM dll сервер, который бы реализовывал интерфейс IRegistrator (задан перечислением функций и параметров). Программа, которая написана не мной вызывает мой COM класс по ProgID, который я указываю ей в настройках. Класс она создает и находит, потому, что я отследил, что запускаются контсруктор и деструктор моего класса. А дальше прога выдает ошибку CreateInstance. У меня есть подозрение, что после того как прога создала мой COM класс, она пытается найти интерфейс IRegistrator. Мне интересно знать, она может его не находить из-за того , что IID (GUID) моего интерфейса, не совпадает с тем, который был зашит в той проге или же она ищет не по IID. Если да, то как мне исправить IID моего IRegistrator в VC++ 6.0. ATL проект Simple Object. Меняю в idl файле начинают сыпаться ошибки. Где же тогда его менять? Если же она ищет не по GUID, то объясните тогда последовательность поиска интерфейса. |
Автор: AndyY 28.5.2004, 01:18 |
в CoCreateInstance можно задать интерфейс объекта - скорее всего клиент так и делает. проверить легко - поставить breakpoint в QueryInterface (я толком не смотрел как это реализовано в ATL, найти по сорцам думаю тривиально). Интерфейс тоже сразу станет известен. GUID естественно должен совпадать - советую просто поискать поиском и посмотреть где встречается. А какие ошибки сыпятся? |