Я боролся с этим, но сейчас я использую вот что: (UNICODE friendly)
CString strCommand («Мой текст для отправки в DLL.»);
**
char strPass[256];
strcpy_s( strPass, CStringA(strCommand).GetString() );
**
// CStringA - это неширокая / символьная версия CString
После этого ваш массив символов с нулевым символом в конце будет помещен в strPass.
Кроме того, если вы управляете библиотекой DLL с другой стороны, укажите свои параметры как:
const char * strParameter
вместо
char strParameter *
"скорее всего" преобразует строки CSt для вас, при этом обычно используется литье по умолчанию.