如何为SDL2/C++中的.exe提供图标?

问题描述 投票:0回答:1

问题:

当我使用 SDL2 函数 SetWindowIcon() 函数时,图标仅在窗口中设置,而不是在 .exe 文件中设置,这意味着当将其固定在我的任务栏中时,我会看到 this icon

我尝试过的:

SDL2功能

    SDL_Surface *iconSurface = IMG_Load("./src/Assets/img/Logo/icon.ico");
    SDL_SetWindowIcon(window, iconSurface);
    SDL_FreeSurface(iconSurface);

.rc 文件

MAIN ICON "File"

MAINICON ICON "File"

重要细节:

Makefile内容:

all:
    cls
    g++ -I src/include -L src/lib -o TKM main.cpp src/include/manmade/Class/* src/include/manmade/Components/* src/include/manmade/Part/* -lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lSDL2_ttf
    ./TKM

编码环境:

OS : Windows
Text Editor : VScode 
Project build with a Makefile
c++ icons exe sdl-2 ico
1个回答
1
投票

学分:

您在评论中回答这个问题是@HolyBlackCat。我只是将其放在答案部分并提供更多详细信息。

我也添加观看一些视频和网站,以获取 C++ 和 SDL2 知识。

答案:

第1步.创建.rc文件。

第2步.在.rc文件中写入这行代码:

MAIN ICON "./thePath/of/yourImage.ico"

步骤 3. 在终端中启动此命令:

windres -i yourRCFileName.rc -o yourRCFileName.o

步骤 4. 通过将 .o 文件的名称放在 main.cpp 后面,与 .o 文件和 Makefile 建立链接,如下所示:

all:
    cls
    g++ -I src/include -L src/lib -o test main.cpp yourRCFileName.o -lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lSDL2_ttf
    ./test

提示:

图像必须是 .ico,否则您将收到以下错误消息:

C:\mingw64\bin\windres.exe: icon file `./src/Assets/img/apple.png' does not contain icon data

您可以使用https://icoconvert.com/等网站来转换您的图像,但他们只接受这些图像:

PNG, JPG or BMP image( maximum size: 50 MB )
© www.soinside.com 2019 - 2024. All rights reserved.