el argumento de tipo const char * es incompatible con el parámetro de tipo “LPCWSTR”

Estoy intentando crear un cuadro de mensaje simple en C en Visual Studio 2012, pero aparece el siguiente mensaje de error

argument of type const char* is incompatible with parameter of type "LPCWSTR" err LNK2019:unresolved external symbol_main referenced in function_tmainCRTStartup 

Aquí está el código fuente

 #include int _stdcall WinMain(HINSTANCE hinstance,HINSTANCE hPrevinstance,LPSTR lpszCmdline,int nCmdShow) { MessageBox(0,"Hello","Title",0); return(0); } 

Por favor ayuda

Gracias y saludos

Para hacer que su código se compile en ambos modos, incluya las cadenas en _T () y use los equivalentes de TCHAR

 #include  #include  int WINAPI _tWinMain(HINSTANCE hinstance, HINSTANCE hPrevinstance, LPTSTR lpszCmdLine, int nCmdShow) { MessageBox(0,_T("Hello"),_T("Title"),0); return 0; } 

Para comstackr su código en Visual C ++ necesita usar las funciones WinAPI de Multi-Byte char en lugar de las de Wide Char.

Establecer proyecto -> Propiedades -> General -> Opción de conjunto de caracteres para usar el conjunto de caracteres de múltiples bytes

Lo encontré aquí https://stackoverflow.com/a/33001454/5646315

Hace poco me encontré con este problema e hice algunas investigaciones y pensé que documentaría algo de lo que encontré aquí.

Para comenzar, cuando llama a MessageBox(...) , en realidad solo está llamando a una macro (por razones de compatibilidad con versiones anteriores) que llama a MessageBoxA(...) para la encoding ANSI o MessageBoxW(...) para la encoding Unicode.

Entonces, si va a pasar una cadena ANSI con la configuración predeterminada del comstackdor en Visual Studio, puede llamar a MessageBoxA(...) lugar:

 #include int _stdcall WinMain(HINSTANCE hinstance,HINSTANCE hPrevinstance,LPSTR lpszCmdline,int nCmdShow) { MessageBoxA(0,"Hello","Title",0); return(0); } 

La documentación completa de MessageBox(...) se encuentra aquí: https://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx

Y para ampliar lo que @cup dijo en su respuesta, podrías usar la macro _T() y continuar usando MessageBox() :

 #include #include int _stdcall WinMain(HINSTANCE hinstance,HINSTANCE hPrevinstance,LPSTR lpszCmdline,int nCmdShow) { MessageBox(0,_T("Hello"),_T("Title"),0); return(0); } 

La macro _T() está haciendo que la cadena “conjunto de caracteres sea neutral”. Puede usar esto para configurar todas las cadenas como Unicode definiendo el símbolo _UNICODE antes de comstackr ( documentación ).

Espero que esta información le ayude a usted y a cualquier otra persona que tenga este problema.