Эта проверка кода запускает приложение следующим параметром:
INT APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, INT iShow)
{
char* szCmdLine = lpCmdLine;
...
}
Ошибка в этой строке: ошибка C2440: «инициализация» не может преобразовать из «LPTSTR» в «char *»
Это потому что LPTSTR
может быть LPSTR
или же LPWSTR
с учетом настроек проекта UNICODE. Когда юникод включен, использование приложения LPWSTR
, если не LPSTR
,
LPSTR
это просто псевдоним для char*
, LPWSTR
— wchar_t*
, T
в LPTSTR
имею в виду TCHAR
тип, какое определение может быть char
или же wchar_t
без разницы UNICODE
или же _UNICODE
символ определяется в вашем проекте.
LP
означает «длинный указатель», long — это 32-битный адрес памяти. STR
строка
Итак, давайте опишем LPSTR
— «длинный указатель на строку ANSI»; LPWSTR
— «длинный указатель на строку широких символов» и LPTSTR
длинный указатель на TCHAR
Строка».
к W
или же T
письмо может быть добавлено префикс C
лайк LPCSTR
, LPCTSTR
, LPCWSTR
что означает, что эти указатели являются постоянными, как const char*
или же const wchar_t*
,
Итак, ваш код должен выглядеть так:
INT APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, INT iShow)
{
TCHAR* szCmdLine = lpCmdLine;
...
}
или же
INT APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, INT iShow)
{
LPTSTR szCmdLine = lpCmdLine;
...
}
Других решений пока нет …