【问题标题】:What language is the Sc1.exe written in?Sc1.exe 是用什么语言编写的?
【发布时间】:2013-11-25 18:35:08
【问题描述】:

在 SciTE 下载页面 (http://www.scintilla.org/SciTEDownload.html ) 有一个链接:

“称为 Sc1 (720K) 的单个文件可执行文件不需要任何 DLL 或属性文件,因为它们已链接到可执行文件中。”

那是用什么语言写的?我下载了超过 2 MB 压缩和超过 7 MB 解压缩的源代码,但单个 exe 为 720K。

他们是否为这个小的独立 exe 使用了不同的语言?他们是怎么把 DLL 文件放在那里的?

他们为 GUI 使用了什么? Python、LUA 还是 MFC?

Python 解释器和 Lua 解释器是否也嵌入到 exe 中?

谢谢!

【问题讨论】:

  • 他们并没有真正“将 dll 文件”放在那里,而是将他们的 exe 静态链接到其外部依赖项。但这会增加 exe 的大小,所以它不能回答你的问题;)

标签: exe scite


【解决方案1】:

答案在他们的download webpage 上:他们使用了UPX 可执行压缩器。它非常有效地压缩可执行文件,因为与 zip 不同,它区分数据/代码部分并以不同方式处理它们。解压器非常小,嵌入在最终的 exe 中;代码和数据在应用程序启动时在内存中解压缩。根据wiki,使用了UCL和LZMA压缩算法。

scite 源目录是 3Mb 未压缩的,用 C++、python 和 lua 编写。单个exe不附带的属性文件将近800kb,doc是500kb。其实有1Mb左右的源代码,应该会生成一个1-5Mb范围内的exe,然后再通过UPX压缩成一个720kb的文件。

【讨论】:

  • 那么Python解释器和Lua解释器也嵌入到exe中了吗?
  • Lua 是嵌入式的,但它很小。 Python 是构建时依赖项,脚本用于准备构建和自动化一些源代码操作,所以不,它不是嵌入的。
  • 感谢@Antoine,这真的很酷。你碰巧知道他们用来创建 GUI 的东西吗?我在他们的网站上找不到。
  • 看代码,GUI是基于Scintilla的。他们似乎还使用本地库(Windows 上的 Win32 API 和 linux 上的 GTK+)手动实现了一些组件。
猜你喜欢
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
  • 2013-09-06
  • 2011-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多