2015-06-10 13 views
6

Tôi nhận được một lỗi liên kết STL liên quan đến sử dụng Microsoft Visual Studio 2015 RC Cộng đồng (Phiên bản 14.0.22823.1 D14REL)lỗi Linker sử dụng VS 2015 RC, không thể tìm thấy biểu tượng liên quan đến std :: codecvt

tôi đang liên kết một C++ DLL và sử dụng thành công nhiều chức năng từ STL, nhưng nó không thể tìm thấy những thứ liên quan đến std :: codecvt:

error LNK2001: unresolved external symbol "__declspec(dllimport) public: static class std::locale::id std::codecvt<char32_t,char,struct _Mbstatet>::id" ([email protected][email protected][email protected]@@[email protected]@[email protected]@A) 

mã tài liệu tham khảo nguồn gây ra vấn đề này:

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

Mã của tôi thế hệ là dành cho dll đa luồng, và tôi đã xác minh thông qua liên kết dài dòng mà MSVCPRT.lib đang được tìm kiếm tại thời gian liên kết.

Bất kỳ ý tưởng nào?

+0

Cập nhật: Microsoft trả lời về vấn đề này trên MSDN (vấn đề được biết): https : //social.msdn.microsoft.com/Forums/en-US/8f40dcd8-c67f-4eba-9134-a19b9178e481/vs-2015-rc-linker-stdcodecvt-error? forum = vcgeneral – topspin

Trả lời

3

Để làm rõ vấn đề và giải pháp: Microsoft thừa nhận rằng std::codecvt không được xây dựng trên char32_t trong thư viện std được cung cấp với Microsoft Visual Studio 2015 RC. Cách giải quyết là sử dụng unsigned int hoặc loại:

std::wstring_convert< std::codecvt_utf8<unsigned int>, unsigned int > convert; 

hoặc

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

thay vì

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

Cách giải quyết này hoạt động nhưng nó gây ra vấn đề rằng basic_string của bạn cũng phải dựa trên int không dấu. Đây chỉ là địa ngục. – Ident

Các vấn đề liên quan