2015-06-10 5 views
6

Ich erhalte eine STL-bezogenen Verbindungsfehler mit Microsoft Visual Studio 2015 RC Gemeinschaft (Version 14.0.22823.1 D14REL)Linker Fehler mit VS 2015 RC, kann nicht Symbol std verwandte finden :: codecvt

ich Verknüpfung einer C++ DLL und erfolgreich viele Funktionen aus der STL verwenden, aber es kann nicht std verwandte finden Sachen :: 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) 

der Quellcode Referenz verursacht dieses Problem:

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

Mein Code Generation ist für Multithread-DLL, und ich habe durch ausführliche Verknüpfung überprüft, dass MSVCPRT.lib nach Link-Zeit durchsucht wird.

Irgendwelche Ideen?

+0

Ein Update: Microsoft darüber auf MSDN antwortete (bekanntes Problem): https : //social.msdn.microsoft.com/Forums/en-US/8f40dcd8-c67f-4eba-9134-a19b9178e481/vs-2015-rc-linker-stdcodecvt-error? forum = vcgeneral – topspin

Antwort

3

Um das Problem und die Lösung zu klären: Microsoft bestätigt, dass std::codecvt nicht gegen die in Std-Bibliothek erstellt mit Microsoft Visual Studio 2015 RC erstellt wird. Die Abhilfe ist es, die unsigned int oder die Typen zu verwenden:

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

oder

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

statt

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

Diese Problemumgehung funktioniert, aber es induziert die Problem, dass Ihr basic_string auch auf unsigned int basieren muss. Das ist einfach die Hölle. – Ident