我在使用Microsoft Visual Studio Community 2015 RC (版本14.0.22823.1 D14REL)时遇到与STL相关的链接错误。
我链接了一个std DLL并成功地使用了C++中的许多函数,但它找不到与std::codecvt相关的东西:
error LNK2001: unresolved external symbol "__declspec(dllimport) public: static class std::locale::id std::codecvt<char32_t,char,struct _Mbstatet>::id" (__imp_?id@?$codecvt@_UDU_Mbstatet@@@std@@2V0locale@2@A)导致此问题的源代码参考:
std::wstring_convert< std::codecvt_utf8<char32_t>, char32_t > convert;我的代码生成是针对多线程dll的,并且我已经通过详细链接验证了在链接时正在搜索MSVCPRT.lib。
有什么想法吗?
发布于 2015-07-06 01:29:04
为了澄清问题和解决方案:微软承认std::codecvt不是基于Microsoft Visual Studio2015RC提供的标准库中的char32_t构建的。解决方法是使用unsigned int或__int32类型:
std::wstring_convert< std::codecvt_utf8<unsigned int>, unsigned int > convert;或
std::wstring_convert< std::codecvt_utf8<__int32>, __int32 > convert;而不是
std::wstring_convert< std::codecvt_utf8<char32_t>, char32_t > convert;https://stackoverflow.com/questions/30765256
复制相似问题