Skip to content

Fix unresolved external symbol for MSVS 2017 (#3762) #3763

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion src/libutil/strutil.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -926,9 +926,16 @@ Strutil::utf16_to_utf8(const std::u16string& str) noexcept
try {
OIIO_PRAGMA_WARNING_PUSH
OIIO_CLANG_PRAGMA(GCC diagnostic ignored "-Wdeprecated-declarations")
// There is a bug in MSVS 2017 causing an unresolved symbol if char16_t is used (see https://stackoverflow.com/a/35103224)
#if defined _MSC_VER && _MSC_VER >= 1900 && _MSC_VER < 1930
std::wstring_convert<std::codecvt_utf8_utf16<int16_t>, int16_t> convert;
auto p = reinterpret_cast<const int16_t*>(str.data());
return convert.to_bytes(p, p + str.size());
#else
std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> conv;
OIIO_PRAGMA_WARNING_POP
return conv.to_bytes(str);
#endif
OIIO_PRAGMA_WARNING_POP
} catch (const std::exception&) {
return std::string();
}
Expand Down