Почему в визарде отсутсвуюет возможность подключить поддержку MFC для атрибутного ATL клиента?
Руками чтоли мне теперь хедеры MFCшные подлючать?
"Деньги портят человека, когда они у других."
Здравствуйте, LaFlour, Вы писали:
LF>Почему в визарде отсутсвуюет возможность подключить поддержку MFC для атрибутного ATL клиента?
LF>Руками чтоли мне теперь хедеры MFCшные подлючать?
Решение найдено! Ковырялся 3 дня.
Ключевые слова: MFC ATL атрибуты
Суть проблеммы — у нас есть ATL сервер в который нас понадобилось включить поддержку MFC.
Не все так просто на первый взгляд. Проблемма заключается в неявной реализации артибутами функций точек входа в сервер для Dll например DllMain, и т.п (для Exe WinMain и т.п.)
При подключении MFC мы должны входить в DllMain не ATL а MFC и при линковке нашего сервера мы получаем сообщение что __DllMain@12 у нас уже есть. И это по-началу повело меня по ложному пути.
Решение — Я начал проверять последовательность линковки библиотек (/VERBOSE в опциях), отключать их и потом еще бороться с некоторыми ошибками, типа имеющейся уже реализации AtlThrow.
Но решение лежало в другой стороне. А оно очевидно (почему я о нем раньше не подумал, а начал бороться с ошибками?)
Нам надо просто отключить наш DllMain в атрибуте [module()] в ATL Сервере. Красиво отключить не изменяя этого атрибута у меня не получилось. Выход простой, удаляем просто атрибут [module()] и все реализуем руками, тама
всего штук 5 функций.
В итоге имеем функциональность ATL на атрибутах, + MFC.
Послесловие
Не ясно почему майкрософт не предоставил такую возможность в визарде.
В визарде оказывается можно сделать то что я привел только из простого ATL+MFC проекта (без атрибутов) — но только случайно можно наткнуться на эту опцию. Логика MC мне не ясна — из простого ATL с MFC можно создать аттрибутный ко-класс, и сконвертировать проект в атрибутный.
Но из атрибутного проека подключить MFC нельзя автоматот. Только руками выкинув атрибут [module()]
PS: Ну влом мне это в отдельную статью оформлять для сайта
Здравствуйте, LaFlour, Вы писали:
[]
LF>Суть проблеммы — у нас есть ATL сервер в который нас понадобилось включить поддержку MFC.
LF>Не все так просто на первый взгляд. Проблемма заключается в неявной реализации артибутами функций точек входа в сервер для Dll например DllMain, и т.п (для Exe WinMain и т.п.)
LF>При подключении MFC мы должны входить в DllMain не ATL а MFC и при линковке нашего сервера мы получаем сообщение что __DllMain@12 у нас уже есть.
Хм... Умеешь ведь вопросы правильно ставить

, так почему сразу не запостил в таком виде

? Глядишь и три дня сэкономил бы...
2Mod: Сорри за оффтоп

... << RSDN@Home 1.0 beta 7a >>