这可能看起来是一个愚蠢的问题,但我在互联网上找不到任何东西。我不知道如何将可执行文件嵌入到程序中。目标是编译后只有一个可执行文件,但嵌入另一个文件。这样我就可以稍后提取文件/二进制文件。
我尝试将其嵌入为资源,但当我尝试查找它时,它总是导致错误代码 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 文件吗?
如有任何帮助,我们将不胜感激。
您需要使用
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文件中正确声明。 更多详情请参阅使用资源。