我正在使用 Code::Blocks,我想为我的程序编译图标并将其与程序的其余部分链接起来。图标文件是一个名为 icon.png 的 PNG 图片,位于工作区项目文件夹的 Others 文件夹中。我右键单击它并在“选项”菜单中选中“编译文件”和“链接文件”。如果这有点不清楚,我制作了一个屏幕截图,准确显示了我所做的事情:
无论如何,问题是编译器给我一条错误消息,指出“没有这样的文件或目录”。如果我选中“编译文件”而不是“链接文件”,编译工作正常但图像未编译。
我想知道如何在不收到错误消息的情况下编译图像文件。
最佳答案
先澄清一下误会:)
编译 是将您的源代码 转换为包含机器代码的目标文件的行为。 链接 正在解决这些目标文件 之间的依赖关系并输出可用的可执行文件/库。
因此,编译或链接图像没有意义。
当然有一些方法可以将图像放入您的程序中:
- 将您的程序作为存档分发并使用文件 IO
- 将图像转换为字节数组并将其放入 C 文件中。
xxd -i
命令就是这样做的 - 把它变成一个目标文件并链接它。查看 this question 的答案
问题是,您想要的是告诉文件管理器有一个图标及其位置。文件管理器不会知道您的字节数组或额外部分。
在 Windows 上,PE 可执行文件可以包含预定义的 .rsrc
部分,其中可以指定要使用的图标。你写一个resource file ,然后由一个特殊的编译器编译成一个你可以链接的目标文件。这是一个 answer关于使用 MinGW 做到这一点。
关于c++ - 如何在 Code::Blocks 中编译和链接图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38400167/