无法将参数 1 从 'const char [11]' 转换为 'LPCWSTR'

Cannot convert argument 1 from 'const char [11]' to 'LPCWSTR'

本文关键字:转换 LPCWSTR char const 参数      更新时间:2023-10-16

我正在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);

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

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

file = CreateFile(L"exmple.bmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
  1. 在"example.bmp"字符串前面加一个"L",例如:

    file = CreateFile(L"exmple.bmp",GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);
    
  2. 这会将"example.bmp"转换为宽字符串。

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