Вы можете предположить, что wchar_t - это utf-32 в мире, отличном от Windows. Это верно для Linux и Mac OS X и большинства систем * nix (исключений мало, и в системах, которые вы, вероятно, никогда не коснетесь: -)
И wchar_t - это utf-16 в Windows. Так что в Windows функция преобразования может просто сделать memcpy: -)
Во всем остальном преобразование является алгоритмическим и довольно простым. Таким образом, нет необходимости в необычной поддержке сторонних библиотек.
Вот основной алгоритм: http://unicode.org/faq/utf_bom.html#utf16-3
И вы можете найти дюжину различных реализаций, если не хотите писать свою собственную: -)