Files
ViewDesignEngine/docs/feedback/VDE-001.md
T
茂之钳 5de74b543a docs: mark all 13 VDE issues as fixed
VDE-001 through VDE-013 all resolved in v1.0.1
ViewDesign workarounds can now be removed
2026-07-27 22:56:29 +08:00

1.3 KiB

id, status, severity, category, date, reporter
id status severity category date reporter
VDE-001 fixed fixed compat 2026-07-27 ViewDesign

VDE-001: brep 模块编译失败(GCC/MSVC 兼容性)

问题描述

ViewDesignEngine 代码主要为 MSVC 编写。MSVC 默认不执行两阶段名称查找,因此模板代码中引用 AABB3D、Point3D 等类型时无需显式 using 声明。GCC/Clang 严格遵循 C++ 标准,要求两阶段查找,导致编译错误。brep 模块引用了未在当前编译单元中声明的类型(如 AABB3D 在 ssi_boolean.cpp 中通过 using namespace vde::core 间接引入),这在 GCC 下是不允许的。

影响文件

  • src/brep/ssi_boolean.cpp
  • src/brep/brep_face_split.cpp
  • src/brep/brep_heal.cpp
  • src/brep/tolerant_modeling.cpp
  • src/mesh/halfedge_mesh.cpp

ViewDesign 侧 Workaround

在 vd_geom 中仅链接 vde_foundation + vde_core,不链接 vde_brep 及其依赖项(vde_curves, vde_mesh, vde_boolean 等)。通过 cmake/vde_gcc_compat.h 强行注入 using 声明。

建议修复方向

  1. 在 brep 模块的所有 .cpp 文件顶部添加显式 using 声明
  2. 重构代码避免在模板上下文中使用未限定的短名称
  3. 考虑使用 using namespace vde::core 或逐类型 using 声明
  4. 在 CI 中增加 GCC/Clang 编译检查

此文件由 ViewDesign 工程自动生成。处理完成后请更新 status 字段。