Clion-MinGW编译后的exe文件添加ico图标的操作方法

 更新时间:2022年07月05日 16:04:57   作者:胡安民  
这篇文章主要介绍了Clion-MinGW编译后的exe文件添加ico图标的操作方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

编译前准备

我们正常直接编译后生成的exe是没有任何图标的


那么很多exe程序都是有个性图标的那么在vs和qt中是比较简单的可是在Clion编译中怎么才能添加呢?

前提条件,本机必须配置好MinGW,并且环境变量也都添加了

经过自己研究发现,我们需要创建一个ico.rc文件放在项目的根目录, 然后给这个文件添加一些配置信息

id ICON "logo.ico"   //添加图标
#include <winver.h>
VS_VERSION_INFO VERSIONINFO
    FILEVERSION 1,0,0,10
    PRODUCTVERSION 1,0,0,10
    FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
    FILEFLAGS VS_FF_DEBUG
#else
    FILEFLAGS 0x0L
#endif
    FILEOS VOS__WINDOWS32
    FILETYPE VFT_DLL
    FILESUBTYPE 0x0L
    BEGIN
        BLOCK "StringFileInfo"
        BEGIN
            BLOCK "080404b0"  //支持中文
            BEGIN
                VALUE "CompanyName", "***有限公司\0"
                VALUE "FileDescription", "软件名称\0"
                VALUE "FileVersion", "1.0.0.10\0"
                VALUE "ProductVersion", "1.0.0.10\0"
                VALUE "LegalCopyright", "版权所有 (C) ***有限公司\0"
                VALUE "LegalTrademarks", "***有限公司\0"
                VALUE "OriginalFilename", "version.exe\0"
                VALUE "ProductName", "软件名称\0"
                VALUE "InternalName", "version.exe\0"
           END
        END
        
        BLOCK "VarFileInfo"
        BEGIN
            VALUE "Translation", 0x804, 1200  //语言-简体中文
        END        
    END

圆角制作 , 圆制作 , ioc图片制作

1.编译ico.rc>ico.o

然后将图标命名为logo.ico 放在项目的根目录,之后我们需要将ico.rc文件编译为ico.o

windres -i "ico.rc" -o "ico.o"  

然后有两种方式,手动打包exe和使用Clion编译exe ,下面图片是项目结构和主文件

2.编译为执行文件exe

手动编译

进入项目的根目录然后

gcc  module/calculate/calculate.c  module/str/str.c  ico.o -g -o  main  main.c

注意: module/calculate/calculate.c module/str/str.c 这些都是 main.c的依赖文件,打包的时候都需要一起带上 ,而ico.o 需要编译进exe中才会生效

Clion编译

然后我们进行编译,就会将图标和信息都添加到exe中了

效果

想要非常好看的图标,可以使用ps自行修

详细信息乱码解决

这是啥问题呢? 这是因为windows默认的是ANSI码 ,而我们使用的是UTF-8编译的ico.rc文件

解决办法使用NotePad++ 将ico.rc文件的UTF-8编码转换为ANSI码 ,然后Ctrl+s保存

之后依据上面的教程, 将ioc.rc从新编译为ioc.o文件,然后在重新打包项目为.exe ,效果如下:

修改exe图标无效

当我们想将exe的图标换成其他的图标,发现新的图标只要和旧的图标名称一样那么,自动就会变为旧的图标,这是因为windows,ico缓存的问题

解决办法 在cmd中输入下命令就行了

taskkill /im explorer.exe /f     
cd /d %userprofile%\appdata\local
del iconcache.db /a
start explorer.exe
exit

到此这篇关于Clion-MinGW编译后的exe文件添加ico图标的文章就介绍到这了,更多相关Clion-MinGW添加图标内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • C指针原理教程之垃圾回收-内存泄露

    C指针原理教程之垃圾回收-内存泄露

    C语言没有运行时库,无法自动压缩使用中的内存,缩小堆栈所需内存空间。若只申请内存,没有释放,势必造成系统内存不断减少、丢失。长时间的运行,最终导致系统死机。文章阐述了C语言垃圾产生的原因,并从引用计数、标记一清除算法两方面提出如何实现C语言的垃圾回收。
    2019-02-02
  • Qt实现定时器的两种方法分享

    Qt实现定时器的两种方法分享

    这篇文章主要为大家详细介绍了Qt中实现定时器的两种不同方法,文中的示例代码讲解详细,对我们了解Qt有一定的帮助,感兴趣的可以跟随小编一起学习一下
    2022-11-11
  • C语言for循环嵌套for循环在实践题目中应用详解

    C语言for循环嵌套for循环在实践题目中应用详解

    初学C语言,常常遇到for循环中嵌套个for循环,初学者对于这种形式总是一知半解,这次我就整理了常见的for循环嵌套for循环的题目,我们一起争取一举拿下这类题。学废他们,以后再见到就不怕啦!每天都要学一点呀。加油,奋斗的我们
    2022-05-05
  • C++中constexpr与函数参数转发的操作方法

    C++中constexpr与函数参数转发的操作方法

    constexpr是c++11引入的关键字,c++11的constexpr的函数中只是支持单句代码,c++14限制放宽,可以在里边写循环及逻辑判断等语句,本文探讨关于constexpr的函数中参数的现象,以及如果参数是constexpr如何做转发,感兴趣的朋友一起看看吧
    2024-02-02
  • C++容器vector实现通讯录功能

    C++容器vector实现通讯录功能

    这篇文章主要为大家详细介绍了C++容器vector实现通讯录功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • C语言静态版通讯录的设计与实现

    C语言静态版通讯录的设计与实现

    静态版通讯录是一种简单的通讯录实现方式,通过定义固定的数组大小来存储联系人信息。该方法不支持动态增删联系人,但具有实现简单、易于理解的优点。在程序设计中,需注意数组边界溢出等问题
    2023-04-04
  • QT实现FTP上传文件

    QT实现FTP上传文件

    这篇文章主要为大家详细介绍了QT实现FTP上传文件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • MySQL的C语言API接口

    MySQL的C语言API接口

    这篇文章主要介绍了MySQL的C语言API接口,需要的朋友可以参考下
    2015-08-08
  • c语言中return与exit的区别浅析

    c语言中return与exit的区别浅析

    c语言中return与exit的区别浅析,需要的朋友可以参考一下
    2013-03-03
  • C++ 中dynamic_cast&lt;&gt;的使用方法小结

    C++ 中dynamic_cast&lt;&gt;的使用方法小结

    将一个基类对象指针(或引用)cast到继承类指针,dynamic_cast会根据基类指针是否真正指向继承类指针来做相应处理
    2013-03-03

最新评论