Невозможно назначить параметр lpCmdLine указателю char *

Эта проверка кода запускает приложение следующим параметром:

INT APIENTRY _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpCmdLine, INT iShow)
{

char* szCmdLine = lpCmdLine;

...
}

Ошибка в этой строке: ошибка C2440: «инициализация» не может преобразовать из «LPTSTR» в «char *»

2

Решение

Это потому что LPTSTR может быть LPSTR или же LPWSTR с учетом настроек проекта UNICODE. Когда юникод включен, использование приложения LPWSTR, если не LPSTR,

LPSTR это просто псевдоним для char*, LPWSTRwchar_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;

...
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]