在项目的资源脚本(.rc定义图标、对话框等的文件)中,您可以添加具有如下行的二进制资源:
IDB_EMBEDEXE BINARY "<path>\\EmbedProgram.exe"
IDB_EMBEDEXE令牌/宏应在该资源脚本和使用它的任何 C++ 源所包含的头文件中定义;这将是调用的参数,您可以使用. 为参数指定(或用于 Unicode 构建)。lpNameFindResource()MAKEINTRESOURCE(IDB_EMBEDEXE)"BINARY"L"BINARY"lpType
像这样:
#define IDB_EMBEDEXE 13232 // Or whatever suitable value you need
//...
// In the C++ code:
HRSRC hResource = FindResource(NULL, MAKEINTRESOURCE(IDB_EMBEDEXE), _TEXT("BINARY"));
HGLOBAL hGlobal = LoadResource(NULL, hResource);
size_t exeSiz = SizeofResource(NULL, hResource); // Size of the embedded data
void* exeBuf = LockResource(hGlobal); // usable pointer to that data
// You can now write the buffer to disk using "exeBuf" and "exeSiz"
然后,指定的可执行文件将完全嵌入(作为二进制)资源在您构建的可执行文件中,并且可以按照您引用的文章中的描述进行提取、写入磁盘和执行。