将exe文件嵌入到C++应用程序中

问题描述 投票:0回答:1

这可能看起来是一个愚蠢的问题,但我在互联网上找不到任何东西。我不知道如何将可执行文件嵌入到程序中。目标是编译后只有一个可执行文件,但嵌入另一个文件。这样我就可以稍后提取文件/二进制文件。

我尝试将其嵌入为资源,但当我尝试查找它时,它总是导致错误代码 1813。这是我的代码:

#include <Windows.h>
#include <iostream>
using namespace std;

int main()
{
    const wchar_t* resourceName = L"embed.exe";
    HRSRC resourceHandle = FindResourceW(NULL, resourceName, RT_RCDATA);
    if (resourceHandle == NULL)
    {
        cout << "Resource not found! Error code: " << GetLastError() << endl;
        getchar();
        return 1;
    }

    cout << "Resource found!" << endl;
    getchar();

    return 0;
}

我曾经在一个 C# 项目中让它工作过,但我不记得我是怎么做到的。我刚刚添加了文件,可以轻松获取流。我必须依赖 .rs 文件吗?

如有任何帮助,我们将不胜感激。

c++ winapi exe embedded-resource
1个回答
0
投票

您需要使用

MAKEINTRESOURCE
将整数值转换为与资源管理功能兼容的资源类型。像这样:

HRSRC hRes; 
HMODULE hExe; 
#define IDD 103
hExe = LoadLibrary(TEXT("embed.exe"));
if (hExe == NULL)
{
    ......
    return;
}
hRes = FindResource(hExe, MAKEINTRESOURCE(IDD), RT_RCDATA);
if (hRes == NULL)
{
    ......
    return;
}

IDD需要在.rc文件中正确声明。 更多详情请参阅使用资源

© www.soinside.com 2019 - 2024. All rights reserved.