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

标签 c++ c image png codeblocks

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

screenshot

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

我想知道如何在不收到错误消息的情况下编译图像文件。

最佳答案

先澄清一下误会:)

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

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


当然有一些方法可以将图像放入您的程序中:

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

问题是,您想要的是告诉文件管理器有一个图标及其位置。文件管理器不会知道您的字节数组或额外部分。

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

关于c++ - 如何在 Code::Blocks 中编译和链接图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38400167/

相关文章:

c - 排序(快速排序)、分区

c - 在 C 中,什么时候支持条件 "test ? : alt"形式(空的 true 大小写)?

WPF - 如何对裁剪后的图像应用效果?

css - 我们如何确定移动网站的图像大小?

c++ - 删除构造函数和模板

c++ - 尝试将 int 转换为 string

c++ - 为什么基础构造函数会被继承,我该如何防止呢?

c - 丢弃来自 libcurl 的响应数据

c++ - gdb:如何在循环执行期间暂停?

html - 将自定义图像边框添加到导航栏顶部