Jas*_*Lam 3 c++ windows embed cygwin exe
我写了一个 c++ 程序,我想在里面执行我的第二个程序,这是一个 exe 文件。问题是我想将我的程序作为一个文件共享给其他人。
当我在互联网上搜索时,我找到了这个解决方案。
只需在编译时使用 .rc 文件将第二个 .exe 文件作为二进制资源存储在主 .exe 中。在运行时,您可以使用
FindResource()、LoadResource()和访问它,LockResource()然后将其写出到磁盘上的临时文件,然后再将其传递给system().
但我不明白如何“将 .exe 文件存储为二进制资源”
我目前正在使用它CreateProcess()来启动我的第二个程序,该程序运行良好。任何人都可以为我写一些例子吗?
在您项目的资源脚本(.rc定义图标、对话框等的文件)中,您可以使用如下一行添加二进制资源:
IDB_EMBEDEXE BINARY "<path>\\EmbedProgram.exe"
Run Code Online (Sandbox Code Playgroud)
当IDB_EMBEDEXE令牌/宏应在由包含一个头文件被定义既该资源脚本和任何C ++源极(S),其使用(一个或多个)它; 这将是lpName提供给FindResource()调用的参数,您可以使用MAKEINTRESOURCE(IDB_EMBEDEXE). 为参数指定"BINARY"(或L"BINARY"用于 Unicode 构建)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"
Run Code Online (Sandbox Code Playgroud)
然后,指定的可执行文件将完全嵌入(作为二进制)资源在您构建的可执行文件中,并且可以按照您引用的文章中的描述提取、写入磁盘和执行。
| 归档时间: |
|
| 查看次数: |
1428 次 |
| 最近记录: |