【问题标题】:Including other files in c++ for File I/O在 C++ 中包含其他文件以用于文件 I/O
【发布时间】:2011-08-08 04:39:31
【问题描述】:

有没有办法在 c++ 程序中将文件添加到最终的 .exe 中? 例如,假设我想播放一个声音文件。而不是将声音文件与发行版 .exe 分开包含,该文件应该是 exe 的一部分。 我知道 C++ 中资源文件的使用。 This MSDN 网站上的文章,说可以在 Visual C++ 中使用资源。我也可以在 Eclipse 上使用它们吗?还请说明如何使用它们。

【问题讨论】:

  • 最好的可移植方式可能是在文件中包含一个大的静态字节数组。我知道您可以相对轻松地对图像执行此操作,但其他数据的想法应该相同。
  • 如何在我的 .exe 中“包含”该文件?我如何首先从图像中创建一个字节数组?
  • @viraj:通常通过将二进制文件转换为数组声明:char sound_foo_wav[] = { 0,5,-42, ... 并将其编译进去。在 unixy 系统上,xxd -i 可以做到这一点。

标签: c++ file-io eclipse-plugin embedded-resource mingw32


【解决方案1】:

建议:

实际上,最简单的方法是简单地将二进制内容附加到 .exe 的末尾。之后附加一个 4 字节的“长度”值。它不会影响您运行 .exe 的能力。然后,在运行时:

1) 将 .exe 作为二进制文件打开,只读。

2) fseek(或等效)到 .exe 大小 - 4。

3) 读取长度

4) fseek 到 exe 大小 - 长度 - 4

5) 读取二进制文件

这适用于 DOS、Windows 和 Linux 文件。

【讨论】:

  • 您如何将图像(例如位图或 jpeg)转换为二进制文件?编辑:如果我使用记事本打开图像,我在看它的二进制文件吗?
  • 图像是二进制文件。就此而言,文本文件也是如此。如果您在记事本中打开图像,您会看到将数据解释为文本时得到的字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 2021-11-09
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 2014-12-05
  • 2021-12-15
相关资源
最近更新 更多