2013-05-29 62 views
5

我对某个主题有一个简短的问题,我很乐观。我有一个程序,我发一个命令给另一个.exe文件,我称为“工具”。我以这种格式发送:C++将外部.exe嵌入到我编译的.exe中

system("tools\\program.exe -r -w file.dat file_new.dat"); 

一切都很正常,但是,当我建立我的程序为.exe文件,将需要其他可执行文件是在第二个文件夹,很明显。有没有办法将外部.exe文件包含到我的项目中,以便最终产品只是一个.exe文件?

我正在使用Visual Studio 2008(lol)并运行windows 7 64bit。

谢谢:)

回答

4

通常情况下,外部依赖的管理将由安装程序处理。 NSIS是我最喜欢的Windows平台解决方案。

替代方法:将二进制转换为base64编码,并将其作为头文件嵌入到项目中。运行应用程序时,将exe的base64表示转换为二进制序列,然后将该字节序列输出到临时目录中的文件(如C:\ windows \ temp或%AppData%\ Local \ Temp)。然后运行exe。一旦你完成了它,删除exe文件。

+0

所以我需要做一个安装程序?我觉得有一些方法可以将它添加为资源或其他东西。我希望能够向某人发送一个.exe文件。我也不希望用户能够获得外部.exe的副本,这就是为什么我希望它嵌入。 – mrg95

+0

不,您不需要,但替代方案要复杂得多,NSIS会生成一个快速且压缩的exe文件 –

+0

我需要让用户将我的程序“安装”到他们的系统中吗?如果是这样,当它安装时,他们是否可以访问外部.exe。因为它是一个.exe,我不想让任何人从我这里得到。 – mrg95

1

您可以将文件添加到资源。在命令执行之前,您可以检查第二个可执行文件是否存在。如果它不存在,你必须从资源中提取数据并存储到文件中...

This thread正在处理从资源中读取html。它与二进制文件非常相似。