windows 尝试使用WriteConsoleOutputCharacter()时,“无法将'wchar_t*'转换为'LPCSTR' {也称为'const char *'} gcc”

xyhw6mcr  于 2022-12-14  发布在  Windows
关注(0)|答案(1)|浏览(410)

所以,我试图使用“Windows.h”输出unicode字符与wchar_t* 控制台,我发现在互联网上,这是我应该使用的代码:

wchar_t *screen = new wchar_t[nScreenWidth*nScreenHeight];
    HANDLE hConsole = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
    SetConsoleActiveScreenBuffer(hConsole);
    DWORD dwBytesWritten = 0;

   while(1) {
      screen[nScreenWidth * nScreenHeight - 1] = '\0';
       WriteConsoleOutputCharacter(hConsole, screen, nScreenWidth * nScreenHeight, { 0,0 }, &dwBytesWritten);

   
   }

然而,当我尝试编译时,我得到了这个错误:无法将'wchar_t*'转换为'LPCSTR' {也称为'const char *'} gcc
我用mingw 64编译,我用这个命令:

"-std=c++20",
            "-g",
                "${workspaceFolder}/*.cpp",
            "-L",
                "${workspaceFolder}\\src\\lib",
            "-I",
                "${workspaceFolder}\\src\\include",
            "-l",
                "mingw32"   ,"-l",
                "SDL2main"  ,"-l",
                "SDL2",
            "-o",
                "main",

(从技术上讲,我也在使用SDL 2,但目前不需要)
感谢您发送编修。

twh00eeo

twh00eeo1#

WriteConsoleOutputCharacterWriteConsoleOutputCharacterWWriteConsoleOutputCharacterA的宏,具体取决于字符集编译器选项。
WriteConsoleOutputCharacterW接受LPCWSTR(如果编译器不支持wchar_t,则也称为const WCHAR*const wchar_t *const unsigned short *)作为参数。
WriteConsoleOutputCharacterA接受LPCSTR(也称为const char *)作为参数。
因此,请检查编译设置,确保实际调用的是哪个版本,并将screen定义为正确的类型。
如果不确定或者您想同时支持这两种类型,您可以使用TCHAR字符串/缓冲区代替。TCHARWCHARchar的宏,取决于相同的编译器选项。而LPCSTR/LPSTR是指针类型的宏。

相关问题