6

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

我正在链接一个 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)

导致此问题的源代码参考:

std::wstring_convert< std::codecvt_utf8<char32_t>, char32_t > convert;

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

有任何想法吗 ?

4

1 回答 1

3

澄清问题和解决方案:Microsoft 承认这std::codecvt不是针对char32_tMicrosoft Visual Studio 2015 RC 提供的 in std 库构建的。解决方法是使用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;
于 2015-07-05T17:29:03.947 回答