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

Loading files merged with executable

我正在尝试将一个文件与我的可执行文件合并,并读取合并后的文件。我将它们与 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 上的以下章节以获取更多信息。

Introduction to Resources

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

Using Resources