Йоха, спасибо.
Вот только проблема в том, что предложенный тобой код не универсален, а в псивове уже есть множество функций вывода текста. Твоё преобразование придётся пихать в каждую их них или писать функцию (что почти равносильно - всё равно придётся переписывать код в очень многих местах...)
Но всё же интересно, как эту ситуацию порешили разработчики мангоса
Владимир, не поделитесь тайной?
Добавил функцию, решил так перевести хотя бы некоторые строки - фиг вам получил.
Код:
Код:
char *str_utf8_to_866(BYTE *buf)
{
wchar_t* pResw = 0;
char* pRes = 0;
int res_len = 0;
res_len = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)buf, -1, 0, 0);
if (!res_len)
return NULL;
pResw = new wchar_t[res_len];
if (!MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)buf, -1, pResw, res_len))
{
delete[] pResw;
return NULL;
}
res_len = WideCharToMultiByte(866, 0, pResw, -1, 0, 0, 0, 0);
if (!res_len)
return 0;
pRes = new char[res_len];
if (!pRes)
return NULL;
if (!WideCharToMultiByte(866, 0, pResw, -1, pRes, res_len, 0, 0))
{
delete[] pRes;
return NULL;
}
delete[] pResw;
return pRes;
}
void logcustom(uint8 lvl, Color color, BYTE *stru, ...)
{
char *str = str_utf8_to_866(stru);
if(!str || loglevel < lvl)
return;
va_list ap;
_log_setcolor(true,color);
if(logtime)
printf("%s ", GetTimeString().c_str());
va_start(ap, str);
vprintf( str, ap );
va_end(ap);
_log_resetcolor(true);
printf("\n");
if(logfile)
{
fprintf(logfile, "%s", getDateString().c_str());
va_start(ap, str);
vfprintf(logfile, str, ap);
fprintf(logfile, "\n" );
va_end(ap);
fflush(logfile);
}
fflush(stdout);
}
Почему-то ругается на неразрешённый внешний символ
Код:
3>DefScriptInterface.obj : error LNK2001: неразрешенный внешний символ ""void __cdecl logcustom(unsigned char,enum Color,char const *,...)" (?logcustom@@YAXEW4Color@@PBDZZ)"
А при чём он здесь вообще???