Хотите улучшить этот вопрос? Переформулируйте вопрос, чтобы он соответствовал тематике «Stack Overflow на русском».
Закрыт 9 месяцев назад.
Обновил проект с VS2013 на vs2017 и получаю ошибку
неразрешенный внешний символ ""public: static class std::locale::id std::codecvt<char16_t,char,struct _Mbstatet>::id" (?id@?$codecvt@_SDU_Mbstatet@@@std@@2V0locale@2@A)"
Подскажите как пофиксить?
Код конвертора
#include "utfconvert.h"
string utf16_to_utf8(const u16string &s)
{
wstring_convert<codecvt_utf8_utf16<char16_t>, char16_t> conv;
return conv.to_bytes(s);
}
string utf32_to_utf8(const u32string &s)
{
wstring_convert<codecvt_utf8<char32_t>, char32_t> conv;
return conv.to_bytes(s);
}
std::u16string utf8_to_utf16(const string &s)
{
//wstring_convert<codecvt_utf8_utf16<char16_t>, char16_t> conv;
//return conv.from_bytes(s);
}
std::u16string utf32_to_utf16(const u32string &s)
{
wstring_convert<codecvt_utf16<char32_t>, char32_t> conv;
string bytes = conv.to_bytes(s);
return u16string(reinterpret_cast<const char16_t*>(bytes.c_str()), bytes.length() / sizeof(char16_t));
}
std::u32string utf8_to_utf32(const string &s)
{
wstring_convert<codecvt_utf8<char32_t>, char32_t> conv;
return conv.from_bytes(s);
}
std::u32string utf16_to_utf32(const u16string &s)
{
const char16_t *pData = s.c_str();
wstring_convert<codecvt_utf16<char32_t>, char32_t> conv;
return conv.from_bytes(reinterpret_cast<const char*>(pData), reinterpret_cast<const char*>(pData + s.length()));
}
Вообще-то VS2017 поддерживает codecvt
, просто выдает предупреждение насчет "deprecated". Так что ошибка скорее всего получается из-за настроек проекта.
Решение комитета по стандартизации удалить из языка совершенно необходимое средство довольно спорное - это мягко говоря, а хотелось бы сказать грубо. Но приходится как-то с этим жить, так что лучше сразу ориентироваться на другие варианты.
Один вариант - это ICU Project. Решение исчерпывающее, но настолько монструозное и неудобное, что его и советовать не хочется.
По личному опыту могу порекомендовать UTF-CPP. Маленькая и быстрая библиотека шаблонов с достаточно адекватной документацией. Поддерживает UTF8/16/32.
Наверняка найдется что-то еще, но я остановился на UTF-CPP, пока устраивает полностью.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Почему ring в виде восьмигранника оказывается не валиден:
Подскажите, пожалуйста, как работать с данной технологией ? Чтобы таблицы, поля в них сами создавались и заполнялись с помощью ORM? Нужно ли подключать...
Есть два объекта класса MyBean (в классе всего полей 15 типа int и String):