黑月新星BlackMoonNG 源码编译与部署完整教程

本教程用于从源码编译黑月编译器插件 BlackMoon.fne,并部署到易语言 IDE 中使用。项目采用 CMake + MSVC 工具链构建,仅支持 Win32(x86)架构。黑月新星BlackMoonNG 为易语言提供黑月静态编译能力。编译产物 由易语言 IDE () 加载,在 IDE 中提供黑月静态编译入口,并将易语言程序转换为可独立运行的 Windows EXE 或 DLL。BlackMoon.fnee.exe

1. 下载黑月编译插件源码 (https://github.com/zhongjianhua163/BlackMoonNG)
有需要的话可以下载黑月静态库源码(https://github.com/zhongjianhua163/BlackMoonKernelStaticLib)
2. 下载ECL工具 (https://github.com/zhongjianhua163/ECommandPrompt)

一、编译环境准备

必须满足以下全部条件,否则会出现配置或编译失败。

  • Windows 操作系统
  • Visual Studio 2019 或 2022,安装时需勾选「使用 C++ 的桌面开发」工作负载,包含:
    • MSVC v142 / v143 生成工具(x86)
    • Windows SDK(Win10 或 Win11 任一版本)
    • CMake 工具(Visual Studio 自带即可)
  • 项目仅支持 32 位构建,不支持 x64 架构

二、详细编译步骤

1. 解压源码

将 BlackMoonNG-main.zip 完整解压到无中文、无空格的目录,例如 D:\dev\BlackMoonNG-main。

2. 打开 MSVC 编译环境终端

请勿使用普通 CMD 或 PowerShell,必须打开带 MSVC 编译环境的终端,任选其一:

  • 方式一:开始菜单搜索「Developer PowerShell for VS 2022」并打开
  • 方式二:开始菜单搜索「x86 Native Tools Command Prompt for VS 2022」并打开

3. 进入源码根目录

在终端中切换到解压后的源码文件夹:

cd D:\dev\BlackMoonNG-main

4. CMake 配置生成工程

执行以下命令,生成 Win32 架构的 Visual Studio 解决方案:

cmake -S . -B build -G "Visual Studio 17 2022" -A Win32
  • 若使用 Visual Studio 2019,生成器参数改为 "Visual Studio 16 2019"
  • -A Win32 参数必须保留,用于指定 32 位构建,省略将默认 x64 导致失败

执行成功后,源码目录下会生成 build 文件夹,内含完整的 VS 解决方案文件。

5. 执行 Release 编译

执行以下命令开始编译发布版本:

cmake --build build --config Release -- /m:1
  • --config Release 表示编译发布版本,日常使用推荐此配置
  • 如需调试版本,可改为 --config Debug
  • /m:1 表示单线程编译,可避免部分环境下并行编译出错

等待终端输出「生成成功」即表示编译完成。

三、获取编译产物

编译成功后,核心插件文件位于以下路径:

build/bin/Release/BlackMoon.fne

该文件为易语言支持库格式,是黑月编译器的 IDE 插件主体。

四、部署到易语言 IDE

仅编译出 BlackMoon.fne 无法完整运行黑月编译,还需配套工具链与核心静态库,完整部署步骤如下。

1. 放置支持库文件

将 BlackMoon.fne 复制到易语言安装目录的 lib 文件夹下,例如:

C:\Program Files (x86)\e\lib\BlackMoon.fne

2. 补齐运行依赖目录

在易语言安装目录下新建 BlackMoon 文件夹,并在其中创建两个子目录:

目录路径 用途 放入内容
BlackMoon/bin/ 编译工具目录 link.exe、rc.exe、cvtres.exe 等 MSVC 32 位工具
BlackMoon/lib/ 链接依赖库目录 黑月核心静态库 kernel.lib 等文件

说明:本源码仅生成 IDE 插件 BlackMoon.fne。黑月核心静态库 kernel.lib 来自配套的 BlackMoonKernelStaticLib 项目,需单独编译或从现成黑月整合包中提取。

3. 验证部署

重启易语言,打开「支持库配置」,若能看到「黑月编译器插件」并成功勾选,说明部署完成。

五、常见问题与解决方法

1. CMake 配置阶段提示不支持 64 位
原因:未添加 -A Win32 参数,默认生成 x64 架构。解决:严格按照教程命令添加 -A Win32。
2. 提示找不到 cmake 命令
原因:系统未安装 CMake 或未加入环境变量。解决:使用 Visual Studio 自带的 Developer 终端,或单独安装 CMake 并配置环境变量。
3. 中文路径下出现乱码或编译失败
原因:源码路径包含中文或空格。解决:将源码解压到纯英文、无空格的目录。
4. 编译成功但易语言中看不到插件
原因:fne 文件放错目录,或易语言为精简版缺少依赖。解决:确认文件放入易语言 lib 目录,使用完整版易语言。

编译过程记录

**********************************************************************
** Visual Studio 2022 Developer PowerShell v17.14.39
** Copyright (c) 2025 Microsoft Corporation
**********************************************************************
PS C:\Users\zcp52\source\repos> cd D:\dev\BlackMoonNG-main
PS D:\dev\BlackMoonNG-main> cmake -S . -B build -G "Visual Studio 17 2022" -A Win32
-- Selecting Windows SDK version 10.0.26100.0 to target Windows 10.0.26340.
-- The CXX compiler identification is MSVC 19.44.35228.0
-- The C compiler identification is MSVC 19.44.35228.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: D:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/bin/Hostx64/x86/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: D:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/bin/Hostx64/x86/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Configuring done (15.2s)
-- Generating done (0.2s)
-- Build files have been written to: D:/dev/BlackMoonNG-main/build
PS D:\dev\BlackMoonNG-main> cmake --build build --config Release -- /m:1
适用于 .NET Framework MSBuild 版本 17.14.51+25f168cee
 
  Checking File Globs
  1>Checking Build System
  Building Custom Rule D:/dev/BlackMoonNG-main/CMakeLists.txt
  bm_config.cpp
  bm_compile_pipeline.cpp
  bm_ecode_to_obj.cpp
  bm_globals.cpp
  bm_macro.cpp
  bm_mem_scan.cpp
  bm_vc_file.cpp
  bm_api_hook.cpp
  bm_window_hook.cpp
  bm_dll_main.cpp
  bm_lib_entry.cpp
  bm_edit_def_dialog.cpp
  bm_settings_dialog.cpp
  bm_settings_dialog_controller.cpp
  bm_settings_dialog_ui.cpp
  bm_settings_dialog_view.cpp
  bm_json.cpp
  bm_log.cpp
  bm_output.cpp
  bm_path.cpp
  正在生成代码...
  正在编译...
  bm_search_memory.cpp
  bm_string.cpp
  正在生成代码...
  WinDirectUI_Animation.c
  WinDirectUI_Clipboard.c
  WinDirectUI_Resource.c
  WinDirectUI_Types.c
  WinDirectUI_Control_Button.c
  WinDirectUI_Control_CheckBox.c
  WinDirectUI_Control_Image.c
  WinDirectUI_Control_Label.c
  WinDirectUI_Control_List.c
  WinDirectUI_Control_ProgressBar.c
  WinDirectUI_Control_RadioBox.c
  WinDirectUI_Control_ScrollBar.c
  WinDirectUI_Control_ScrollView.c
  WinDirectUI_Control_Select.c
  WinDirectUI_Control_Slider.c
  WinDirectUI_Control_Splitter.c
  WinDirectUI_Control_Tab.c
  WinDirectUI_Control_Table.c
  WinDirectUI_Control_TextEdit.c
  WinDirectUI_Control_Tree.c
  正在生成代码...
  正在编译...
  WinDirectUI_Control_Core.c
  WinDirectUI_Control_Event.c
  WinDirectUI_Control_Layout.c
  WinDirectUI_Control_Render.c
  WinDirectUI_Window_Core.c
  WinDirectUI_Window_Cursor.c
  WinDirectUI_Window_Dpi.c
  WinDirectUI_Window_Drop.c
  WinDirectUI_Window_Event.c
  WinDirectUI_Window_Input.c
  WinDirectUI_Window_Menu.c
  WinDirectUI_Window_Monitor.c
  WinDirectUI_Window_Popup.c
  WinDirectUI_Window_Relation.c
  WinDirectUI_Window_Render.c
  WinDirectUI_Window_Timer.c
  WinDirectUI_Window_Tooltip.c
  WinDirectUI_Draw_Context.c
  WinDirectUI_Draw_Image.c
  WinDirectUI_Draw_Shapes.c
  正在生成代码...
  正在编译...
  WinDirectUI_Draw_Text.c
  正在生成代码...
  WinDirectUI_Graphics_D2d.cpp
  WinDirectUI_Graphics_GdiPlus.cpp
  WinDirectUI_Graphics_Image.cpp
  正在生成代码...
  yyjson.c
    正在创建库 D:/dev/BlackMoonNG-main/build/lib/Release/BlackMoon.lib 和对象 D:/dev/BlackMoonNG-main/build/lib/Release/BlackMo
  on.exp
  BlackMoon.vcxproj -> D:\dev\BlackMoonNG-main\build\bin\BlackMoon.fne
  Building Custom Rule D:/dev/BlackMoonNG-main/CMakeLists.txt
PS D:\dev\BlackMoonNG-main>

功能概览

  • 以易语言支持库形式接入 ,提供版本查询和编译触发能力。e.exe
  • 在易语言 IDE 中注入“黑月静态编译”菜单命令,支持通过菜单或 触发编译。Alt+F7
  • 捕获易语言原生编译阶段生成的代码数据,将易代码解析并转换为 COFF OBJ。
  • 调用 完成最终 EXE/DLL 链接,支持黑月、C/C++、VC++ 三种链接模式。link.exe
  • 支持 多配置管理,可配置链接器、目标文件、库路径、链接选项、子系统版本和 Cdecl 等参数。Config.json
  • 支持编译前、链接前、编译后的 Action 命令,并提供宏替换、输出重定向和超时控制。
  • 支持自动发现 资源脚本,通过 和 将图标、版本信息、字符串表等资源加入最终程序。.rcrc.exeCVTRES.exe
  • 生成 DLL 时读取易语言公开子程序信息,支持自定义导出名称以及 / 调用约定。cdeclstdcall
  • 通过易语言输出窗口和日志模块反馈编译过程、外部工具输出及错误信息。
  • 分享到:

    用微信扫一扫,分享给朋友


    发布日期:

    所属分类: 编程语言 标签: