简介说明
易语言的黑月(BlackMoon)静态库长期停在老工具链里:源码是 CP936 编码,经典路线还得靠 VC6。BlackMoonModernCore 做的事很具体——把传统 BlackMoon 源码和一份内置的现代核心源码放进同一个仓库,用脚本一次构建,产出语义编译适配包、传统黑月静态库和经典 VC6 静态库三类链接期产物,供 e-packager 的独立编译流程使用。
三条路线,三种产物,互不通用
| 路线 | 架构 | 关键产物 | 说明 |
|---|---|---|---|
| 语义编译 | x86 + x64 | adapter/ 目录 | 现代核心 FNE + 语义适配静态库,推荐使用 |
| 传统黑月 | 仅 x86 | legacy_static_lib/x86/krnln.lib | 传统 E 码 / BlackMoon.obj 路线,由 MSBuild 构建 |
| 经典黑月编译器 | 仅 x86 | -vc6.zip 内的 krnln.lib | 真实 VC6 工具链构建,直接替换易语言安装目录中的核心库 |
三者不能混着用:语义适配库喂不进传统链接,VC6 库也不能用于 semantic 模式。选哪条,取决于你要 x64、要沿用传统黑月工具链,还是要直接替换易语言安装目录里的核心库。
语义编译:把 adapter 目录交给 e-packager
从 Release 下载对应架构的 ZIP,解压后把其中的 adapter 目录交给 e-packager:
e-packager.exe compile MyApp.e .\out\MyApp-x64.exe ` --compile-mode semantic ` --arch x64 ` --blackmoon-x64-dir .\adapter
x86 换成 --arch x86 --blackmoon-x86-dir .\adapter。adapter 内部布局如下:
adapter/ ├── lib/<arch>/krnln.fne # 支持库元数据 ├── static_lib/<arch>/ # krnln_static.lib、krnln_fallback.lib、krnln_adapter.json └── blackmoon-package.json # 版本、架构、SHA-256、构建来源
ZIP 根目录另有一份等价的 lib/、static_lib/、legacy_static_lib/ 投影,可以直接覆盖到 e-packager 目录使用。
同一架构下的 .fne、主静态库、fallback 静态库和 krnln_adapter.json 必须来自同一个 Release,跨版本混用会在链接期产生符号不一致。
传统黑月与经典 VC6 的落盘位置
传统黑月路线用合并包或 x86 包里的 legacy_static_lib/x86/krnln.lib,放进传统黑月工具链的库目录。这条工具链还得自带 LINK.EXE、BlackMoonExe.obj、EyInit.obj 等文件,仓库本身不提供。
经典黑月编译器用 -vc6.zip,把里面的 krnln.lib 放到易语言安装目录的黑月库目录:黑月 4.0 及以上是 \BlackMoon\obj\,4.0 以下是 \BlackMoon\lib\。部分黑月版本里这个核心库叫 kernel.lib,按目录内已有的文件名替换即可。
Release 包里有什么,怎么自己构建
| 文件 | 内容 |
|---|---|
| BlackMoonKernelStaticLib-<版本>.zip | 合并包:语义 x86/x64 + 传统 x86 |
| ...-x86.zip | 语义 x86 + 传统 x86 |
| ...-x64.zip | 语义 x64 |
| ...-vc6.zip | 经典 VC6 Win32 krnln.lib |
每个包内的 blackmoon-package.json 记录版本、平台工具集、依赖的现代核心提交和全部文件哈希,可以用来校验下载内容。
自己构建需要 Windows、Visual Studio / MSBuild 和 PowerShell,语义与传统产物一次跑完:
pwsh -NoProfile -ExecutionPolicy Bypass ` -File .\scripts\BuildBlackMoonRelease.ps1 ` -Version local ` -OutputRoot .\artifacts\release
常用开关:-LegacyOnly 只构建传统 Win32 静态库;-SkipModernBuild 复用已构建的现代核心;-X86MetadataFne 与 -X64FallbackLibrary 可以直接指定已审计过的依赖文件。更细的说明在 scripts/README.md。
经典 VC6 库需要固定的 giulioz/vc6-docker 镜像(VC6 + Wine),由 scripts/BuildBlackMoonVc6.cmd 在容器内构建,本地可以用 scripts/PackageBlackMoonVc6.ps1 单独打包:
pwsh -NoProfile -ExecutionPolicy Bypass ` -File .\scripts\PackageBlackMoonVc6.ps1 ` -InputLibrary .\artifacts\vc6\krnln.lib ` -Version local
推送 v1.2.3 形式的 tag 会自动构建并发布 Release;带 -beta、-rc、-pre 等后缀的 tag 会发成预发布版本,不会覆盖 Latest。
现代核心从哪来,以及许可
modern-core/krnln/ 提取自 chungbinb/ycIDE-electron 的固定提交 a1e45277fef25ac7480f40d66083aef31a924944,提供 Unicode 与 x64 支持,以及 fallback 实现。
要改传统 BlackMoon 源码,需要保持 ANSI/GB2312 编码、兼容各版本 MSVC、慎用内联汇编与新指令集,规范写在 Readme.txt 里。问题走 Issue,改进走 Pull Request。
许可与来源:BlackMoon 源码及其构建产物为 BSD 3-Clause,modern-core/ 为 MIT,重新分发二进制产物时两套许可证与版权声明都要保留。核心静态库原作者是云外归鸟,后续由泪闯天涯(邓学彬)升级、被封七号优化,版权为 Copyright (c) 2019 钟建华。上游地址见 GitHub 与 Gitee,复制传播时请一并注明。
下载地址
https://github.com/aiqinxuancai/BlackMoonModernCore
https://pan.baidu.com/s/1CJzghjAsez5hqwU0nVGqZg?pwd=78c9 提取码: 78c9





评论抢沙发