2016-07-24 1 views
-2

Я делаю программу в C++, который создает .bmp файл, но я получаю сообщение об ошибке, я не понимаю:Не удается преобразовать аргумент 1 из «сопзЬ гольца [11]» к «LPCWSTR»

'HANDLE CreateFileW (LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE)': не удается преобразовать аргумент 1 из 'сопзЬ гольца [11]' к 'LPCWSTR'

Эта ошибка происходит, когда я скомпилировать этот код :

file = CreateFile("exmple.bmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 
+0

Это не полезное название. Пожалуйста, исправьте это. –

+0

Правильно, пожалуйста, исправьте свой голос. –

+0

Нет, все еще не полезно. –

ответ

1
  1. Помещенного «L» перед «example.bmp» строка , например:

    file = CreateFile(L"exmple.bmp",GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL); 
    
  2. Это превращает "example.bmp" в строку широких символов.

5

Вы компилируете с UNICODE включен, поэтому CreateFile() соответствует CreateFileW(), а его первый аргумент - это LPCWSTR, указатель на 16-разрядную (широкосимвольную) строку.

Чтобы исправить эту ошибку, добавьте L к передней части строкового литерала, чтобы сделать его широкую строку:

file = CreateFile(L"exmple.bmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); 
+2

Или - если вам не нужны широкие символы - вызовите ANSI-вариант CreateFile с именем 'CreateFileA'. – datenwolf

2

Вам нужно добавить 'L' перед именем файла.

Смежные вопросы