使用VS 2015 RC的链接器错误,找不到与std :: codecvt相关的符号

top*_*pin 6 stl visual-studio codecvt c++11

我使用Microsoft Visual Studio Community 2015 RC(版本14.0.22823.1 D14REL)收到与STL相关的链接错误

我正在链接一个C++ DLL并成功使用STL中的许多函数,但它找不到与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)
Run Code Online (Sandbox Code Playgroud)

导致此问题的源代码引用:

std::wstring_convert< std::codecvt_utf8<char32_t>, char32_t > convert;
Run Code Online (Sandbox Code Playgroud)

我的代码生成是针对多线程dll的,我通过详细链接验证了在链接时搜索MSVCPRT.lib.

有任何想法吗 ?

Gas*_*rdP 3

为了澄清问题和解决方案:Microsoft 承认这std::codecvt不是针对char32_tMicrosoft Visual Studio 2015 RC 提供的 std 库构建的。解决方法是使用unsigned int__int32类型:

    std::wstring_convert< std::codecvt_utf8<unsigned int>, unsigned int > convert;
Run Code Online (Sandbox Code Playgroud)

或者

    std::wstring_convert< std::codecvt_utf8<__int32>, __int32 > convert;
Run Code Online (Sandbox Code Playgroud)

代替

    std::wstring_convert< std::codecvt_utf8<char32_t>, char32_t > convert;
Run Code Online (Sandbox Code Playgroud)

  • 此解决方法有效,但它会导致您的 basic_string 也必须基于 unsigned int 的问题。这简直就是地狱。 (3认同)