是否有办法的链接,一个现有的。文件与其他C++源文件中汇编的?什么实际上,我试图要做的就是压缩解压的一些文件在我的控制台节目,使用伊兹玛(7zip)SDK但不幸的是,这是非常困难的使用对于一个新手。

有一个命令线版本,称为伊兹玛7za.exe 我想知道如果我可以以某种方式将它嵌入到我的程序和使用它就像一个功能。它可以很容易地使用系统()function(这似乎是一个非常危险的事情,以使用),但随后如果我把我的节目以人没有7za.exe 在右边的文件夹,它不会的工作。

我遇到了CreateProcess()function in windows.h头的文件,但它似乎达到什么样的系统()并在一个更适当和先进的方式。我不知道,如果它实际上可以 链接 该文件喜欢的一个目文件中汇编

有帮助吗?

解决方案

CreateProcess()是Windows API调用来启动一个进程,正是因为它听起来像,因为你的程序,你可以知道它的HANDLE控制的孩子。 system()执行系统命令。这就像你永远不会知道,我个人避免使用它不惜一切代价 - 不仅是因为它是不可移植的(存在于Windows和Linux的功能,但该命令不会)

是可能的数据追加到EXE图像的端部 - 这是如何安装工作。看看这个 Microsoft支持文章,这奇怪的是让你的代码中基本的,但你应该能够把它变成C ++平凡。这里有创建自解压这可能是更适合的。双方应该让你的EXE文件嵌入

我不建议你抽取7zaSystem()CreateProcess()称之为 - 我建议你学习的SDK。这是困难的,但你会从做中学到很多东西。

最后,你必须修改你将不能够在编译时要做到这一点现有的exe文件。你需要具备的代码添加任何自身的图像或其他图像。

寻址数据的更多细节的附加到一个exe

其他提示

好吧,试试这个...

  1. 写的命令行程序,仅仅是一份文件,以结束另一个。你可以做这个有窗户的文件I/O或壳的命令。
  2. 做出后建立的步骤,运行这个工具。你的计划将充分链接,通常的方式,然后你的实用程序将仅仅是添加字节的第二exe的目标exe。

这是联步骤。现在运行时访问exe是一个不同的事情。从本质上讲,算法是:

  1. 打开EXE被埋在一个字节的水平的二进制编辑(msdev.exe 会做)。注意到第30或40个字节作为一个独特标记的开头的文件。
  2. 写一个功能,打开了化合物的文件上面创建和搜查的嵌入式文件的寻找唯一的标记。
  3. 一旦开始的嵌入式文件被发现,复制的字节的文件的第二个新的文件用文件I/O.
  4. 执行新文件使用的系统()或类似的API。

如果你分发其他人的这种方式工作,请获得许可正确的。它通常是侵犯版权,以扔掉别人的二进制成你自己的-也有例外的,当然。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top