Тема: Использование ATL в ObjectARX 2007 (_DEBUG)
Делаю в программе
#include "atlbase.h"
для того чтобы пользоваться CRegKey (читать инфу в реестре).
Проект сгенерен визардом. ObjectARX Wizard проектам в Debug ставит ключик \MD.
В 2006 все компайлелось и запускалось.
В 2007 при попытке линковке выдается сообщение что:
_CrtDbgReportW не найдена :(. Это и понятно т.к. стоит ключик \MD (т.е. использовать релизную библиотеку).
Ставлю ключик \MDd. Все начинает компайлиться в ObjectARX 2007. Но при попытке запуска в AutoCAD 2007 arx отказывается грузиться т.к. не находятся необходимые dll.
А не находит msvcr80d.dll... Т.е. ее просто нет в папке акада и поиком по компу - она лежит только в потрахах VS 2005 и не "торчит" на ружу (т.е. не прописана в системных путях). При этом предыдущая версия msvcr70d.dll - есть в System32.
Попытка закинуть msvcr80d.dll в папку System32 приводит к тому что при загрузке ARX летят баги, что не найден манифест к DLL (т.е. она просто не зарегистрирована). Зарегить ее не получается...
Короче такое порочное кольцо - если ставить в DEBUG ключ \MD, то не собирается, если ставить \MDt, то не стартует в AutoCAD 2007...
Пока нашел такой выход: В тех местах где надо включить atlbase.h файл, делаю #include "atlbase_r.h", где "atlbase_r.h" написал сам как:
#pragma once
#ifdef _DEBUG
#undef _DEBUG
#include "atlbase.h"
#define _DEBUG
#else
#include "atlbase.h"
#endif
В Debug все собирается и запускается, т.е. "ручками" приходиться включать ATL в релиз моде...
Такие вот пироги.
1) Пишу для информации если кто столкнется.
2) Есть комментарии по этому поводу - що це такое и почему так? Или я опять торможу и что-то не понимаю...?
С Уважением, Константин.