char* tchar_to_utf8(const TCHAR* str) { #ifdef _UNICODE int size = WideCharToMultiByte(CP_UTF8, 0, str, wcslen(str), NULL, 0, NULL, NULL); char* str8 = (char*) malloc(size+1); WideCharToMultiByte(CP_UTF8, 0, str, wcslen(str), str8, size, NULL, NULL); str8[size] = '\0'; return str8; #else return _strdup(str); #endif }