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

Loading files merged with executable

本文关键字:合并 文件 可执行文件 加载      更新时间:2023-10-16

我正在尝试将一个文件与我的可执行文件合并,并读取合并后的文件。我将它们与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文件时,却找不到它(尽管它与可执行文件合并了。)

有什么建议吗?

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

资源简介

特别是,下面的例子展示了如何在.exe文件中创建新资源并将数据写入其中。这个例子从另一个.exe文件中复制资源,但你可以随心所欲地写入。在这种情况下,将RT_DIALOG替换为RT_RCDATA,然后写入图像数据。

使用资源