本教程用于从源码编译黑月编译器插件 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>