【问题标题】:Including Files(dll, txt etc.) in .exe Application in C++在 C++ 中的 .exe 应用程序中包含文件(dll、txt 等)
【发布时间】:2014-01-25 13:32:22
【问题描述】:

我制作了一个用 C++ 编写的程序,它使用许多文件,例如 .dll 或 .png。 程序和文件位于同一目录中。 是否可以在 .exe 应用程序中包含文件? 这样我只需要 .exe 文件即可运行程序。

【问题讨论】:

  • 根据您使用的框架,您可以将 png 文件添加到可执行文件中。无需在某处提取就无法添加的 dll。

标签: c++ file dll include exe


【解决方案1】:

啊,是的。答案是在您正在运行的可执行文件的末尾写入您需要的所有文件,包含在一个 zip 文件中。方法如下:Part 1(写入可执行文件)和 Part 2 [断开的链接](从可执行文件读取)。这很有趣;好问题。

请注意,您不能对 DLL 文件执行此操作 - 它们必须与可执行文件位于同一目录中或安装在计算机上。

【讨论】:

    【解决方案2】:

    有趣的问题和答案。

    我很久以前就这样做了,将 .exe 中的所有文件作为资源,然后使用以下过程将它们全部提取出来:

    HRSRC hResInfo = FindResource(NULL, MAKEINTRESOURCE(MY_RESOURCE_ID), MY_RESOURCE_TYPE);
    HGLOBAL hRes = LoadResource(NULL, hResInfo)
    LPVOID lpData = LockResource(hRes);
    HANDLE hFile = CreateFile(....)
    WriteFile(hFile, lpData, SizeOfResource(NULL, hResInfo), ...);
    CloseHandle(hFile)
    

    我的实现的问题是每次添加新文件时我都必须重新编译 .exe(幸运的是,这种情况只发生了一两次),但很高兴知道它在后台是如何工作的。

    【讨论】:

    • 这是一种更直接的方法,但是如果您没有 Visual Studio 专业版,则资源文件很难管理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多