我会解释我想要什么,然后我会解释我是如何努力实现它的。我想知道我是否以正确的方式解决这个问题,或者是否有更简单的方法。
我想要的:一个自解压的可执行文件恰好还有一个额外的入口点(这使得可执行文件可以像 DLL 一样使用)。附加入口点必须不是压缩负载的一部分。奇怪的是,入口点不会执行任何 LZMA 功能(请不要问为什么......长话短说)。仅供引用:制作具有 DLL 入口点的可执行文件是一件微不足道的事情 - 我已经知道该怎么做。
我是如何追求的:我已经下载了 LZMA SDK 并将构建我自己的 C++ 自解压器。似乎没有 LZMA API 文档。显然,如果我想学习如何使用 LZMA,我必须阅读 .\C\util\7z\7zmain.c 或 .\cpp\7zip\bundles\lzmaCon\lzmaAlone.cpp。我不知道学习那些是不是最快的学习工具。
创建自解压代码后,我将添加所需的 DLL 入口点并构建。生成的 EXE 自解压器我将与一个 zip 文件连接(一个 DOS 命令应该足以连接这两个文件)。这应该可以实现我的目标。
想法?
附注顺便说一句,几年前我已经部分完成了。我制作了一个自解压器(我认为是在 C# 中)可执行文件,然后我将其与一个 zip 文件连接(通过 DOS 命令)。瞧,一个自解压的 zip 可执行文件出现了。使我当前的工作有所不同的是,现在我正在使用 C++,并且我需要这个额外的/任意的 DLL 入口点。
最佳答案
为什么要把这两种功能混在一起?为什么不直接制作一个 dll 和一个使用它的可执行文件。
关于c++ - 制作自定义自解压器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5034673/