Erreur C2664: 'Strcpy': impossible de convertir le paramètre 1 de 'Tchar *' à 'Char *' Code:
LPCTSTR name; strlen (name)
4 Réponses :
Probablement parce que TCHAR est défini comme un caractère dans l'un de vos projets, mais pas dans la VS2010, un où il est probablement wchar_t. p>
Si votre projet définit Unicode / _unicode, ce qui est identique à celui de la spécifier comme une version Unicode dans les paramètres du projet, Tchars sera WCHAR_T. P>
Vous devez essentiellement décider d'utiliser unicode ou non et non et si vous le faites, vous devez modifier les appels réguliers vers Strncpy et al vers les équivalents à large caractère ou utiliser les variantes TChantes de la même manière que Tchars . Regardez l'aide pour Strncpy ou les autres fonctions pour voir ce que sont appelés les larges ou les variantes T. p>
Vous pouvez également consulter MSDN pour les appels tels que Strcpy , où vous pouvez voir que la version wide-char est appelée WCSCPY et la version T s'appelle _TCSCY. Je vous recommanderais de vous contacter avec les versions T si vous allez utiliser le code dans différents projets qui utilisent Unicode ou non, ni pour prendre une décision éclairée que vous allez utiliser, puis vous en tenir à cela. Ce qui est mieux dépend de votre scénario, je dirais et peut invoquer des opinions "religieuses" ... p>
@Christoferw: J'ai mis à jour ma réponse pour vous donner un pointeur sur la façon de résoudre ce problème. Écrivez un autre commentaire si vous avez besoin de plus d'aide.
Votre projet est-il un projet Unicode? Si oui, je pense que TCHAR code> sera équivalent à un
wchar_t code> plutôt qu'un
char code> rendant vos tentatives de conversion invalides. voir ici pour plus d'informations. P>
Il est sélectionné aux paramètres du projet dans Visual Studio: Set de caractères: Utilisez un ensemble de caractères multi-octets
Vous devez utiliser une fonction telle que wcstombs a> quand _unicode est défini. Soit cela ou simplement utiliser _tcslen (regarder sous < EM> Mappages de routine génériques-textes em>) sur la chaîne TCHAR et le compilateur le transférera à Strlen ou WCSlen selon que si vous utilisez Unicode ou non. P>
Ce post vient de m'avoir sauvé quelques heures. La valeur par défaut pour les nouveaux projets C ++ consiste à utiliser le jeu de caractères Unicode. Désactiver cela, corrigé ces erreurs.
Voici un certain code qui fera le tour pour vous, il a été publié à l'origine sur www.wincli.com/?p=72, mais ici, je l'ai enfoncé dans une petite classe :)