impossible de convertir le paramètre 1 de 'char *' to 'LPCWSTR'
Im essayant de charger un fichier BMP
AUX_RGBImageRec *LoadBMP(char *Filename) //Loads A Bitmap Image
{
FILE *File=NULL; //File Handle
if (!Filename) //Make Sure A Filename Was Given
{
return NULL; //If Not Return NULL
}
File=fopen(Filename,"r"); //Check To See If The File Exists
if (File) //Does The File Exist?
{
fclose(File); //Close The Handle
return auxDIBImageLoad(Filename); //Load The Bitmap And Return A Pointer
}
return NULL; //If Load Failed Return NULL
}
c'est à partir d'un exemple cependant, je suis maintenant l'erreur
error C2664: 'auxDIBImageLoadW' : impossible de convertir le paramètre 1 de 'char *' to 'LPCWSTR'
comment pourrais-je corriger cela?
- ce type est le nom du fichier ?
Vous devez vous connecter pour publier un commentaire.
Vous êtes à la compilation de votre application avec le Jeu de Caractères d'UNICODE (Paramètres du Projet -> Options de Configuration -> Général). Windows fichiers d'en-tête d'utilisation #définit à "cartographier" les noms de fonction soit nameA (pour multi-chaînes d'octets) ou nameW (pour les chaînes unicode).
Cela signifie que quelque part dans un fichier d'en-tête, il y aura un #define comme ce
De sorte que vous n'êtes pas en train d'appeler
auxDIBImageLoad
(il n'y a pas de fonction de même nom), vous appelezauxDIBImageLoadW
. EtauxDIBImageLoadW
s'attend à une chaîne unicode (wchar_t const*
). Vous êtes de passage d'une chaîne multi-byte (char const*
).Vous pouvez effectuer l'une des opérations suivantes
auxDIBImageLoad
avecauxDIBImageLoadA
LoadBMP
fonction d'accepter une chaîne unicode lui-mêmeLoadBMP
Je recommande soit de changer
LoadBMP
à accepter une chaîne unicode en lui-même, ou en appelant leauxDIBImageLoadA
directement (dans cet ordre).Changer les paramètres du projet peut être OK, si elle ne casse pas beaucoup de code des autres.
Je pas suggèrent la conversion de la chaîne, mais, depuis qu'il est inutile. L'appel de
auxDIBImageLoadA
directement est beaucoup plus facile, et le résultat est le même.Vous avez un peu d'options:
auxDIBImageLoadA
au lieu deauxDIBImageLoad
Filename
's type dechar*
àwchar_t*
std::mbstowcs
pour convertir le nom de fichier à partir d'unchar*
à unwchar_t*
Ressemble au votre, essayez d'utiliser deux jeux de caractères différents. 'char ' est typique de l'ANSI et LPCWSTR est le caractère large (c'est à dire unicode). Si vous souhaitez utiliser char changer le Jeu de Caractères de la propriété dans votre projet de création de "l'Absence de Set".
Essayez d'utiliser MultiByteToWideChar() la manière suivante:
Convertir le tableau de caractères à un LPCWSTR. Vous pouvez voir cela dans le 2ème gars post ici