問題描述:
在qt工程中調用QString::fromStdWString()時,老是報錯error LNK2019: 無法解析的外部符號...QString::fromStdWString(...)...
原因:
在Qt庫中 wchar_t 不是內置類型,所以QT建議我們構建基於Qt的軟件時,也不要將 wchar_t 作為內置類型。但是在一些情況下,其他的庫構建時可能已經將 wchar_t 作為了內置類型。當使用 std::wstring、QString::toStdWString()和 QString::fromStdWString() 將導致鏈接錯誤.
解決方案:
std::wstring qToStdWString(const QString &str) { #ifdef _MSC_VER return std::wstring((const wchar_t *)str.utf16()); #else return str.toStdWString(); #endif } /*! Convert an std::wstring to a QString */ QString stdWToQString(const std::wstring &str) { #ifdef _MSC_VER return QString::fromUtf16((const ushort *)str.c_str()); #else return QString::fromStdWString(str); #endif }