Ну почему когда кодишь на WinAPI - это как ходишь по граблям? Оказывается MultiByteToWideChar не умеет конвертить UTF-16 и UTF-32.
Мне нужно свести к минимуму использование альтернативных либ. Даже несмотря на то, что компиляю GCC, не использую pthread и iconv. Но если с WinThread ещё жить можно, то iconv замена так себе.