Commit Graph
1 Commits
Author SHA1 Message Date
gjm ec5f62670d fix(mcp_frame): 修复 c++_dll 工具大量注册失败与写库被文档锁拦截
- 版本校验:基座侧改用编译期常量 (ARX<<16)|SUB_ARX,不再调用运行时的
  acrxGetApiVersion()。该函数由 rxapi.lib 的 acrxGetApiVersionImpl 提供,
  是有状态实现(读写进程内全局),返回值随调用次数变化;AutoCAD 加载 ARX
  时已调用过一次,导致基座值与 DLL 值不等,绝大多数 DLL 工具被拒绝注册。
- 新增 DLL 模块缓存:同一 DLL 全进程只 LoadLibrary 一次,后续工具复用句柄
  并跳过版本校验。
- 文档锁:mcp_Tool_DllProxy::Execute 统一 lockDocument/unlockDocument,
  修复 DLL 工具在 AutoCAD 应用上下文写数据库返回 eLockViolation
  (表现为 openWriteSpace 拿不到模型空间)的问题。
- 代理类不再 FreeLibrary 模块(改由模块缓存统一卸载),避免同一 DLL 的多个
  工具重复释放、引用计数被打穿。
- 诊断日志精简为仅记录 arx_version/dll_version,且每次加载清空重写。
- 新增 verify_annotate.py:批注工具集运行时验证脚本(绘制/校验/改属性/清理)。
2026-10-09 22:31:49 +08:00