c++ - 制作自定义自解压器

标签 c++ sdk compression 7zip lzma

我会解释我想要什么,然后我会解释我是如何努力实现它的。我想知道我是否以正确的方式解决这个问题,或者是否有更简单的方法。

我想要的:一个自解压的可执行文件恰好还有一个额外的入口点(这使得可执行文件可以像 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/

相关文章:

iphone - 如何在ios中解压/提取7z压缩文件

c++ - 在析构函数中调用 remove() 删除文件是否安全?

c++ - 在一堆中查找一个项目

c++ - C++ 构造函数初始化列表中的 vim 缩进

android - 安装每个版本或最新版本就足够了?

c# - 原始文件比 GZip 解压文件大

algorithm - 压缩打乱的整数序列 [0, N)

c++何时将方法放在类之外

android - 如何只为一个模块启用proguard

android - 为什么 "cocos compile -p android"给出 "The android command is no longer available."错误