Compiler construction 电子书到exe应用程序如何编译成自包含的可执行文件?

Compiler construction 电子书到exe应用程序如何编译成自包含的可执行文件?,compiler-construction,exe,Compiler Construction,Exe,我试图理解在运行exe时,各种电子书应用程序如何将其输出编译成一个独立的可执行文件,而不依赖于任何文件。 怎样才能做到呢?他们使用真正的嵌入式编译器吗 它们只是包含电子书的加载程序/查看器,该加载程序/查看器与可执行文件中的电子书数据本身配对 有很多方法可以做到这一点,首先你应该了解二进制文件是否真的没有依赖关系,或者它是否搜索库(例如acrobat库),然后你可以编程一个查看器,直接从二进制文件加载数据,或者在基于向量的视图(较小)中,或者在基于图像的视图中(比如没有ocr文本的PDF) 我假

我试图理解在运行exe时,各种电子书应用程序如何将其输出编译成一个独立的可执行文件,而不依赖于任何文件。
怎样才能做到呢?他们使用真正的嵌入式编译器吗

它们只是包含电子书的加载程序/查看器,该加载程序/查看器与可执行文件中的电子书数据本身配对

有很多方法可以做到这一点,首先你应该了解二进制文件是否真的没有依赖关系,或者它是否搜索库(例如acrobat库),然后你可以编程一个查看器,直接从二进制文件加载数据,或者在基于向量的视图(较小)中,或者在基于图像的视图中(比如没有ocr文本的PDF)


我假设你说的是一本pdf电子书。。对于所有其他格式,想法都是一样的:将电子书数据与查看器配对,它们只是在可执行文件中包含一个与电子书数据本身配对的电子书加载程序/查看器

有很多方法可以做到这一点,首先你应该了解二进制文件是否真的没有依赖关系,或者它是否搜索库(例如acrobat库),然后你可以编程一个查看器,直接从二进制文件加载数据,或者在基于向量的视图(较小)中,或者在基于图像的视图中(比如没有ocr文本的PDF)


我假设你说的是一本pdf电子书。。对于其他格式,想法都是一样的:将电子书数据与查看器配对,电子书应用程序可能会创建一个带有集成web浏览器的应用程序。应用程序将被预编译,唯一缺少的就是html内容。这将作为资源添加。不需要完整的编译器。只需将资源添加到现有的可执行文件中


有关如何将html页面添加到资源dll的信息,请参见本节。是一个实用程序,可以从任何可执行文件中提取/替换资源。这样做不需要编译器。

电子书应用程序可能会创建一个带有集成web浏览器的应用程序。应用程序将被预编译,唯一缺少的就是html内容。这将作为资源添加。不需要完整的编译器。只需将资源添加到现有的可执行文件中


有关如何将html页面添加到资源dll的信息,请参见本节。是一个实用程序,可以从任何可执行文件中提取/替换资源。不需要编译器来完成这项工作。

许多archivers sfx模块使用的最简单的方法是预先编译存根,然后将创建的信息附加到此存根(在您的案例中是编译的电子书)。然后,当执行exe时,检测信息块的开始(例如,使用一些预定义的字节序列),并提取播放信息

您甚至可以在exe中嵌入外部引用,例如一些工具,包括.dll文件作为资源,这些文件在运行时提取到临时文件夹,然后从那里加载


当然,将信息嵌入现有可执行文件还有更复杂的方法,例如WinNT上的BeginUpdateResource-UpdateResource-EndUpdateResource序列是将信息嵌入可执行文件(作为资源)的另一种方法。

许多存档者sfx模块使用的最简单方法是预编译存根,然后将创建的信息附加到此存根(在您的编译电子书中)。然后,当执行exe时,检测信息块的开始(例如,使用一些预定义的字节序列),并提取播放信息

您甚至可以在exe中嵌入外部引用,例如一些工具,包括.dll文件作为资源,这些文件在运行时提取到临时文件夹,然后从那里加载


当然,将信息嵌入现有可执行文件还有更复杂的方法,例如WinNT上的BeginUpdateResource-UpdateResource-EndUpdateResource序列是将信息嵌入可执行文件(作为资源)的另一种方法,它的exe文件是由htmls创建的,没有依赖项,我确实把它带到了不同的pc上,没有htmls,就像我之前说过的Activ电子书编译器,你用来存储电子书的格式(比如说html)不会改变解决此问题的方式:您只需将数据与查看器一起插入,即可正确呈现电子书,而无需任何外部依赖项(除了正常的依赖项,例如:html)。嗨,不,这不是pdf电子书,它的exe文件是由htmls创建的,没有依赖项,我确实把它带到了不同的pc上,没有htmls,就像我之前说过的Activ电子书编译器,你用来存储电子书的格式(比如说html)不会改变您解决此问题的方式:您只需将数据与查看器一起插入即可正确呈现电子书,而无需任何外部依赖项(除了正常的依赖项,例如html)。它很可能是一个CHM(Microsoft帮助)文件,可以轻松嵌入到资源中,然后使用Microsoft帮助查看器进行浏览,它应该安装在每台Windows计算机上。我见过的大多数HTML电子书都是CHM格式的,因为它们是独立的。它很可能是一个CHM(Microsoft帮助)文件,可以很容易地嵌入到资源中,然后使用Microsoft帮助查看器进行浏览,每个Windows机上都应该安装该文件。我见过的大多数HTML电子书都是CHM格式的,因为它们是独立的。