2015-06-10 10 views
6

Ricevo un errore di collegamento STL-correlati, utilizzando Microsoft Visual Studio 2015 RC comunitario (Versione 14.0.22823.1 D14REL)Linker errore utilizzando VS 2015 RC, non riesce a trovare il simbolo relativi a std :: codecvt

sto collegando un C++ DLL e con successo utilizzando molte funzioni del STL, ma non riesco a trovare cose relative a 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]_U[email protected]@@[email protected]@[email protected]@A) 

il codice sorgente di riferimento causando questo problema:

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

Il mio codice generazione è per dll multithread e ho verificato tramite link dettagliato che MSVCPRT.lib viene cercato al momento del collegamento.

Qualche idea?

+0

un aggiornamento: Microsoft ha risposto su questo su MSDN (problema noto): https : //social.msdn.microsoft.com/Forums/en-US/8f40dcd8-c67f-4eba-9134-a19b9178e481/vs-2015-rc-linker-stdcodecvt-error? forum = vcgeneral – topspin

risposta

3

Per chiarire il problema e la soluzione: Microsoft ha riconosciuto che std::codecvt non è stato creato con lo char32_t nella libreria std fornita con Microsoft Visual Studio 2015 RC. La soluzione è quella di utilizzare i unsigned int o tipi:

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

o

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

invece di

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

Questa soluzione alternativa funziona ma induce ilproblema che il tuo basic_string deve anche essere basato su unsigned int. Questo è solo un inferno. – Ident