问题描述:
在qt工程中调用QString::fromStdWString()时,老是报错error LNK2019: 无法解析的外部符号...QString::fromStdWString(...)...
原因:
在Qt库中 wchar_t 不是内置类型,所以QT建议我们构建基于Qt的软件时,也不要将wchar_t作为内置类型。但是在一些情况下,其他的库构建时可能已经将wchar_t作为了内置类型。当使用std::wstring、QString::toStdWString()和String::fromStdWString() 将导致链接错误.
解决方案:
QString转成std::wstring:
1 /*! Convert an QString to a std::wstring */
2 std::wstring qToStdWString(const QString &str)
3 {
4 #ifdef _MSC_VER
5 return std::wstring((const wchar_t *)str.utf16());
6 #else
7 return str.toStdWString();
8 #endif
9 }
std::wstring转成QString:
1 /*! Convert an std::wstring to a QString */
2 QString stdWToQString(const std::wstring &str)
3 {
4 #ifdef _MSC_VER
5 return QString::fromUtf16((const ushort *)str.c_str());
6 #else
7 return QString::fromStdWString(str);
8 #endif
9 }