Я понимаю из это и эта ветка, в Windows wchar_t является 16-битным, а для Linux wchar_t — 32-битным.
У меня клиент-серверная архитектура (с использованием только каналов, а не сокетов), где мой сервер основан на Windows, а клиент - на Linux.
Сервер имеет API для получения имени хоста от клиента. Когда клиент основан на Windows, он может просто выполнить GetComputerNameW и вернуть Wide-String. Однако, когда клиент основан на Linux, все становится запутанным.
В качестве первого наивного подхода я использовал mbstowcs(), надеясь вернуть wchar_t* на серверную часть Windows. Однако этот LPWSTR (у меня есть typedef wchar_t* LPWSTR на стороне моего Linux-клиента) не распознается в Windows, поскольку он ожидает, что его wchar_t будет 16-битным.
Итак, преобразование вывода gethostname() в linux - который находится в char * в unsigned short (16-битный) - мой единственный вариант?
Заранее спасибо!