Написал in-process сервер на ATL. В клиенте на VC++ симпортировал ее, подключил, работает как часы. Потом интерфейс сервера оставил без изменения, а тело функий несколько подредактировал. И оба-на, клиент начал ругаться на CreateInstance, не может создать экземпляр сервера!!! Пришлось клиента перекомпилировать. В чем же здесь дело??? Мне что каждый раз прийдется пересобирать клиента при изменении реализации экспортируемых функций сервера?
Заранее благодарен за ответы.
Здравствуйте Долгов Сергей Сергеевич, Вы писали:
ДСС>Написал in-process сервер на ATL. В клиенте на VC++ симпортировал ее, подключил, работает как часы. Потом интерфейс сервера оставил без изменения, а тело функий несколько подредактировал. И оба-на, клиент начал ругаться на CreateInstance, не может создать экземпляр сервера!!! Пришлось клиента перекомпилировать. В чем же здесь дело??? Мне что каждый раз прийдется пересобирать клиента при изменении реализации экспортируемых функций сервера? ДСС> Заранее благодарен за ответы.
Что-то тут не так...
Обычно, перекомпиляция клиента не нужна, если даже расширяется(но не меняется) интерфейс сервера...
Может, использовались разные библиотеки CRT: Debug/Release?
Здравствуйте Ростислав Глухов, Вы писали:
РГ>Здравствуйте Долгов Сергей Сергеевич, Вы писали:
ДСС>>Написал in-process сервер на ATL. В клиенте на VC++ симпортировал ее, подключил, работает как часы. Потом интерфейс сервера оставил без изменения, а тело функий несколько подредактировал. И оба-на, клиент начал ругаться на CreateInstance, не может создать экземпляр сервера!!! Пришлось клиента перекомпилировать. В чем же здесь дело??? Мне что каждый раз прийдется пересобирать клиента при изменении реализации экспортируемых функций сервера? ДСС>> Заранее благодарен за ответы.
РГ>Что-то тут не так... РГ>Обычно, перекомпиляция клиента не нужна, если даже расширяется(но не меняется) интерфейс сервера... РГ>Может, использовались разные библиотеки CRT: Debug/Release?
При грамотном программировании даже Debug/Release не могут помушать.
Видимо дело в коде.
2ДСС: Приведи описание своего интерфейса.
Я обычно просто включаю во второй проект автогенеренный хеадер COM-библиотеки и компилятор (make или IDE) сам занимается попросами перекомпиляции.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.