Тема: Переход на ObjectARX2007. Конвертация const char* -> const ACHAR*

Соотвественно мне надо чтоб мое приложение могло собираться как в 2002/2004/2005/2006 так и в 2007.
Соотвественно есть куча методов типа
RegisterCommand(const char* name....)
{
   cmdReg->registerCommand(name, ...);
}
Соотвественно хочу воспользоваться одним из советов Autodesc, все оставить не в Unicode-e, а вызовы ObjectARX функций const char* перевести на const wchar_t* (оно же const ACHAR*).
Типа надо ввести некую переменную IS_OBJECT_ARX_2007
#define IS_OBJECT_ARX_2007 1
(в зависимости от того к чему компиляем ставим в коде 0 или 1)
#ifdef IS_OBJECT_ARX_2007
   # define STR_CHAR_CNVR(X) (const wchar_t*)WSTRING(X)
#else
   # define STR_CHAR_CNVR(X) X
#endif
Соотвественно переделываю метод как:
RegisterCommand(const char* name....)
{
   cmdReg->registerCommand(STR_CHAR_CNVR(name), ...);
}
Соответственно вопрос по WSTRING. Т.е. я могу сделать некий класс который получает в конструктор const char*, переводит ее в wchar_t[] и имеет оператор (const wchar_t*)
Первый вопрос: Может мне не изобретать велосипед (т.е. не писать это самому), а уже есть нечто подобное в стандартной библиотеке? Т.е. из строки const char* делать строку const wchar_t*?
Второй впрос: Есть ли какой метод наподобии strcpy(const char* origBuf, wchar_t* destBuf )? Или копировать строку посимвольно?
Сорри за простоту вопросов, :) Просто немного лень рыться в хелпе, раньше с такими ситуациями не сталкивался и может кто имеет хороший совет и полезную информацию на эту тему.
С Уважением, Константин.

Re: Переход на ObjectARX2007. Конвертация const char* -> const ACHAR*

> KonstantinM
_bstr_t (поставляется вместе с SDK) решит все твои проблемы

Re: Переход на ObjectARX2007. Конвертация const char* -> const ACHAR*

:) Точно...

Re: Переход на ObjectARX2007. Конвертация const char* -> const ACHAR*

Со стороками разобрался:
Теперь встала такая проблема. Переименовал в старом проекте автокадовские dll-ки с 16 на 17.
Потом открыл его в 2005-й студии, сконвертил и мне падает такая ошибка:
error LNK2019: unresolved external symbol __CrtDbgReportW referenced in function "void __stdcall ATL::AtlThrowImpl(long)" (?AtlThrowImpl@ATL@@YGXJ@Z)    atlsd.lib   
Що це такое? Кто знает как это отлечить. Т.е. отвалилась ATL...
Раньше я делал так.
1) У меня есть тулза, которая переводит VS 6.0 проекты из Object ARX2002 в ObjectARX 2004. (меняет автоматов в dsp 15.lib на 16.lib)
2) Открываю dsw в 2002 студии, проект конвертиться и все собирается под 2004, 2005 и 2006 Акады.
Теперь пытаюсь сделать тот же трюк с той разницей что переименовываю 15->17 и открываю в 2005 студии.
Компиляция проходит успешно, а линкер не может найти ATL-ские функции... Как лечить?

Re: Переход на ObjectARX2007. Конвертация const char* -> const ACHAR*

CrtDbgReportW - используется только в дебаге, посему в Release-е все компиляется...
Может по каким-то причинам при сборке проекта в Debug у меня используются Release-ные C run-time библиотеки... Как посмотреть в 2005 какие стандартные библиотеки используются при компиляции?
В MSDN относительно CrtDbgReportW написано вот что:
Routine  Required header  Compatibility
_CrtDbgReportW
<crtdbg.h>
Windows 95, Windows 98, Windows 98 Second Edition, Windows Millennium Edition, Windows NT 4.0, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003
Libraries
Debug versions of C run-time libraries only.

Re: Переход на ObjectARX2007. Конвертация const char* -> const ACHAR*

Точно. Так и есть.
Почему-то проекты созданные визардом в Debug имели опцию \MD, а не \MDd :( (Debug Multithread DLL)
Вот и лезла эта ошибка.
Только почему-то в 2002 и 6.0 студиях все компайлелось нормально...

Re: Переход на ObjectARX2007. Конвертация const char* -> const ACHAR*

Вообще, как рекомендуют, надо писать что-то типа:

#include <tchar.h>
const TCHAR *value = _T("string value");

Ну и stl строку тоже поправить

typedef std::basic_string<TCHAR, std::char_traits<TCHAR>, std::allocator<TCHAR> > tstring;