2016-07-24 102 views
-2

我在做C++中的程序,它創建了一個.bmp文件,但我得到一個錯誤,我不明白:無法從「爲const char [11]」轉換參數1「LPCWSTR」

'HANDLE CreateFileW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE)':不能從 '爲const char [11]',以當我編譯該代碼 'LPCWSTR'

此錯誤發生轉換參數1 :

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

這不是一個有用的標題。請糾正它。 –

+0

我改正了,請更正您的投票。 –

+0

不,仍然沒有用。 –

回答

1
  1. 在「example.bmp」字符串前面放一個「L」 ,例如:

    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

或者 - 假設您不需要寬字符 - 調用名爲CreateFileA的CreateFile的ANSI變體。 – datenwolf

2

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

相關問題