c++ - convert - char to wchar
No se puede convertir ''const char*'' en ''WCHAR*'' en el argumento que pasa (2)
Para los literales, quiere usar L
en la cadena como en:
L"My String"
Si puede compilar en caracteres anchos o no, entonces puede considerar usar la macro _T()
lugar:
_T("My String")
Los caracteres de cadena ancha en MS-Windows usan el formato UTF-16. Para obtener más información sobre los formatos Unicode, consulte el sitio web de Unicode .
Para convertir dinámicamente una cadena, necesita conocer el formato de su cadena char *
. En la mayoría de los casos, en Windows es un Win1252, pero definitivamente no siempre. Microsoft Windows admite muchos formatos de 8 bits, incluidos UTF-8 e ISO-8859-1.
Si confía en la configuración regional, puede usar las funciones mbstowc_s()
.
Para otras conversiones, es posible que desee ver la función MultiByteToWideChar()
Tengo documentación en la que está escrito que el nombre de usuario, IP y contraseña deben ser const char*
y cuando estoy poniendo varaibles en const char
, obtengo este mensaje de error.
Este es mi código:
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <windows.h>
using namespace std;
typedef int (__cdecl *MYPROC)(LPWSTR);
int main()
{
HINSTANCE hinstDLL;
MYPROC ProcAdd;
hinstDLL = LoadLibrary("LmServerAPI.dll");
if(hinstDLL != NULL){
ProcAdd = (MYPROC) GetProcAddress(hinstDLL,"LmServer_Login");
if(ProcAdd != NULL){
const char* IP = "xxx.177.xxx.23";
const char* name = "username";
const char* pass = "password";
int port = 888;
ProcAdd(IP,port,name,pass);
system ("pause");
}
}
}
Y obtuve este error:
no puede convertir
const char*'' to
WCHAR *'' en el argumento que pasa
¿Qué tipo de variable debo usar para esos argumentos y cómo?
Probablemente esté utilizando uno de los compiladores de Visual Studio, donde en la Project Settings
, hay una opción de Character set
. Escoge de:
- Conjunto de caracteres Unicode (UTF-16), predeterminado
- Conjunto de caracteres de múltiples bytes (UTF-8)
- No establecido
Las funciones de llamada que aceptan cadenas en la configuración Unicode requieren que hagas literales de cadena Unicode:
"hello"
Es de tipo const char*
, mientras que:
L"hello"
es de tipo const wchar_t*
. Por lo tanto, cambie su configuración a Not set
o cambie sus literales de cadena a los más anchos.