我正在使用Code :: Blocks,我想编译并链接我的程序的图标与程序的其余部分。图标文件是名为icon.png的PNG图像,位于工作区中项目文件夹的Others文件夹中。我右键单击它并在选项菜单中选中“编译文件”和“链接文件”。如果这有点不清楚,我已经制作了一个屏幕截图,其中显示了我已完成的工作:
无论如何,问题是编译器给我一条错误消息,上面写着“没有这样的文件或目录”。如果我检查“编译文件”但不检查“链接文件”,编译工作正常但图像未编译。
我想知道如何编译图像文件而不会收到错误消息。
答案 0 :(得分:4)
让我们首先澄清误解::)
编译是将源代码转换为包含机器代码的对象文件的行为。 链接正在解决这些目标文件之间的依赖关系,并输出可用的可执行文件/库。
因此,编译或链接图像没有意义。
当然有办法让图像进入你的程序:
xxd -i
命令就是这样做的问题是,你想要的是告诉文件管理器,有一个图标,它在哪里。文件管理器不会知道你的字节数组或额外部分。
在Windows上,PE可执行文件可以包含预定义的.rsrc
部分,其中包括可以指定要使用的图标。你编写了一个resource file,然后由一个特殊的编译器编译成一个你可以链接的目标文件。这是使用MinGW进行此操作的answer。