加载与可执行文件合并的文件

时间:2015-03-22 14:55:37

标签: c++ merge

我尝试将文件与我的可执行文件合并,然后读取合并后的文件。我将它们与Windows命令合并;

copy /b Game.exe+Image.jpg TheGame.exe

以下是我尝试的内容:

std::ifstream f("Image.jpg");
if (f.good()) {
    std::cout << "Found Image.jpg" << std::endl;
}

Image.jpg与生成的可执行文件位于同一目录中,并且可以正常工作。但是,当我使用该命令合并它们然后删除Image.jpg文件时,它找不到它(尽管它与可执行文件合并。)

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

ifstream仅适用于外部文件。您删除了它尝试打开的文件,因此当然找不到该文件。您尝试的内容不能(轻松)使用二进制合并完成。如果要将文件存储在可执行文件中,则正确的方法是将其存储在资源中。有关详细信息,请阅读MSDN上的以下章节。

Introduction to Resources

特别是,以下示例显示了如何在.exe文件中创建新资源并将数据写入其中。该示例从另一个.exe文件复制资源,但您可以编写任何您想要的内容。在tbis案例中,将RT_DIALOG替换为RT_RCDATA,然后编写图像数据。

Using Resources