ATL: не удается удалить метод из интерфейса COM - ВСЕГДА появляется снова как волшебство - PullRequest
2 голосов
/ 10 марта 2011

Среда: VS2008, C ++ ATL COM, 64Bit, Windows 7

Я пытаюсь удалить метод из старого интерфейса COM.Я изменяю * .idl, изменяю связанные файлы реализации * .h и * .cpp, а также удаляю его из файла .h основного проекта.Я могу искать по всему проекту старое имя метода - не показывает, и он хорошо компилирует / ссылки.Однако, если я тогда использую Object Browser, чтобы посмотреть на скомпилированную DLL - метод dang все еще там!Если я «ссылаюсь» на DLL в проекте .NET - показывает метод.Если код .NET пытается использовать метод - он получает исключение памяти (что имеет смысл).Я не могу на всю жизнь понять, как изменить IDL, удалить код метода и получить правильную скомпилированную DLL.

Где, черт возьми, скрывается метод, и существует ли другой способудалить метод из существующего сгенерированного ATL COM-интерфейса?Я в тупике!Спасибо!

1 Ответ

3 голосов
/ 10 марта 2011

Вы отменили регистрацию старого модуля DLL и зарегистрировали новый?Похоже, что ваш реестр может иметь противоречивую запись.

Также убедитесь, что нет предварительно скомпилированных заголовков и т. Д., Чтобы при компиляции вы были уверены, что в нем не было какой-либо старой копии.

, вероятно, лучше всего удалить полную сборкукаталог (отладка / выпуск) перед компиляцией на тот случай, если вы пропустили удаление некоторых старых файлов.

проверьте также путь, куда загружен .dll, вы можете увидеть это в браузере объектов, сравнить его с записью реестра,может быть, вы делали 32-битную версию раньше?

...