Я создаю .SM2 и .RM2 экстрактор / компилятор для игры, но у меня проблемы с кодом. Я совсем не имею опыта в C ++, и код является исходным кодом, предоставленным оригинальным создателем. Даже в его оригинальном файле, который я не редактировал, были ошибки, но он все равно создал программу. Может кто-нибудь, пожалуйста, помогите мне с ошибками?
Ошибки:
Ошибка 1: ошибка C2664: «CreateDirectoryW»: невозможно преобразовать параметр 1 из «const char [25]» в «LPCWSTR»
Ошибка 2: ошибка C2664: «CreateDirectoryW»: невозможно преобразовать параметр 1 из «char *» в «LPCWSTR» (X3)
Ошибка 4: ошибка C2664: «FindFirstFileW»: невозможно преобразовать параметр 1 из «char [256]» в «LPCWSTR»
Ошибка 5: ошибка C2440: «инициализация»: невозможно преобразовать из «WCHAR [260]» в «char *»
Вот мой код, по-видимому, с ошибками:
CreateDirectory(".\\TESTFOLDER\\TESTFOLD2ER", NULL); (This is for Error 1)
CreateDirectory(string, NULL);
break; (This is for Error2)if ((hdl = FindFirstFile(asteriskpath, &data)) == INVALID_HANDLE_VALUE)
return; (For Error3)
char* filename = data.cFileName;
char current_dir[256]; (For Error4)
Пожалуйста помоги,
Спасибо,
Cameron
Sawaya
Способ 1: установите настройку вашего проекта на Use Multi-Byte Character Set
:
Настройте свойства> Общие> Проект по умолчанию> Набор символов> Использовать многобайтовый набор символов
Способ 2:
Для ошибки 1/2/4:
Вы должны конвертировать char[]
в wchar_t[]
прежде чем перейти к CreateDirectory()
(Для вашей ошибки 1, аналогично для других ошибок 2 и 4), так как они используют разные типы кодировки символов. Пытаться swprintf
с %hs
флаг.
Пример:
wchar_t ws[100];
swprintf(ws, 100, L"%hs", ".\TESTFOLDER\TESTFOLD2ER");
Для ошибки 5:
Вы можете использовать wcstombs
функция для преобразования wchar_t[]
в char[]
, ссылка Вот.
Других решений пока нет …