如何在Code :: Blocks中编译和链接图像

时间:2016-07-15 15:42:27

标签: c++ c image png codeblocks

我正在使用Code :: Blocks,我想编译并链接我的程序的图标与程序的其余部分。图标文件是名为icon.png的PNG图像,位于工作区中项目文件夹的Others文件夹中。我右键单击它并在选项菜单中选中“编译文件”和“链接文件”。如果这有点不清楚,我已经制作了一个屏幕截图,其中显示了我已完成的工作:

screenshot

无论如何,问题是编译器给我一条错误消息,上面写着“没有这样的文件或目录”。如果我检查“编译文件”但不检查“链接文件”,编译工作正常但图像未编译。

我想知道如何编译图像文件而不会收到错误消息。

1 个答案:

答案 0 :(得分:4)

让我们首先澄清误解::)

编译是将源代码转换为包含机器代码的对象文件的行为。 链接正在解决这些目标文件之间的依赖关系,并输出可用的可执行文件/库。

因此,编译或链接图像没有意义。

当然有办法让图像进入你的程序:

  • 将您的程序作为存档分发并使用文件IO
  • 将图像转换为字节数组并将其放在C文件中。 xxd -i命令就是这样做的
  • 将其转换为目标文件并将其链接。查看this question
  • 的答案

问题是,你想要的是告诉文件管理器,有一个图标,它在哪里。文件管理器不会知道你的字节数组或额外部分。

在Windows上,PE可执行文件可以包含预定义的.rsrc部分,其中包括可以指定要使用的图标。你编写了一个resource file,然后由一个特殊的编译器编译成一个你可以链接的目标文件。这是使用MinGW进行此操作的answer