无法转换参数1来自' const char [11]'到LPCWSTR'

时间:2016-07-24 10:24:08

标签: c++

我正在使用C ++编写一个创建.bmp文件的程序,但是我收到一个错误,我不明白:

  

' HANDLE CreateFileW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE)':不能转换参数1来自' const char [11]'到LPCWSTR'

编译此代码时会发生此错误:

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

3 个答案:

答案 0 :(得分:5)

您正在编译时启用UNICODE,因此CreateFile()映射到CreateFileW(),其第一个参数是LPCWSTR,指向16位的指针(宽字符串。

要修复错误,请将L添加到字符串文字的前面,使其成为一个宽字符串:

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

答案 1 :(得分:2)

您需要添加' L'在文件名之前。

答案 2 :(得分:1)

  1. 放一个' L'在" example.bmp"前面字符串,例如:

    file = CreateFile(L"exmple.bmp",GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);
    
  2. 这改变了" example.bmp"成为一个宽字符串。