BlackMoonModernCore:一次构建出黑月 x86/x64 与 VC6 三套核心库

文章目录(快捷跳转)

简介说明

易语言的黑月(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

https://pan.quark.cn/s/ab45e38e6f15

未经允许不得转载:网站源码、软件资源与技术教程分享 - 今夕资源网 » BlackMoonModernCore:一次构建出黑月 x86/x64 与 VC6 三套核心库
扫码在手机上阅读本页
赞(0)

评论抢沙发

评论前必须登录!