2010-05-28 6 views
2

ce code:boost :: système de fichiers :: chemin (std :: wstring) exception throw

boost::filesystem::is_directory("/usr/include"); 

beau travail.

fois ce code:

boost::filesystem::is_directory(L"/usr/include"); 

jeter une exception:

appelé Mettre fin à une instance après avoir jeté de 'std :: runtime_error'
ce que(): locale :: facette :: _ S_create_c_locale nom non valide

OS - Linux Mint

boost 1,43

gcc-4.6.0

Répondre

1
  1. Ne pas utiliser les chaînes étendues sur Linux. Vous n'avez pas besoin d'eux.
  2. Qu'est-ce qui se passe qu'il essaie de convertir une chaîne large en chaîne normale et pour cela crée une locale et probablement cette locale n'est pas configurée dans votre système.

    Apportez la sortie des commandes:

    locale 
    locale -a 
    
  3. GCC-4.6 n'a pas été libéré encore ;-), vérifiez si cela fonctionne avec le compilateur ordinaire. Probablement libstdC++ n'était pas bien construit.
Questions connexes