向Blink DOMWindow添加自定义成员遇链接错误求助
Blink DOMWindow 添加自定义 Member 成员链接错误解决
在DOMWindow类中添加mutable Member<InWindow> inWin_;后出现链接错误,错误指向InWindow类的虚表未定义,触发点集中在DOMWindow的析构流程中。
解决步骤
- 补全InWindow类的必要实现
由于InWindow继承自ScriptWrappable,必须实现Trace方法,否则会缺失虚表符号:void InWindow::Trace(Visitor* visitor) const { ScriptWrappable::Trace(visitor); // 若类内有其他Member成员,在此添加对应的Trace调用 } - 将InWindow源文件加入构建系统
在对应模块的BUILD.gn文件中,把InWindow的.cpp文件添加到sources数组,确保编译阶段包含该类的实现代码。 - 完善DOMWindow的成员管理逻辑
在DOMWindow的构造函数中初始化inWin_(例如inWin_ = MakeGarbageCollected<InWindow>();),同时在DOMWindow的Trace方法中添加visitor->Trace(inWin_);,保证垃圾回收机制能正确追踪该成员。 - 检查头文件引用规范
在DOMWindow的头文件中,要么完整包含InWindow的头文件,要么使用前向声明并在.cpp文件中补全引用,避免因类型不完整导致的链接问题。
内容的提问来源于stack exchange,提问作者ssmy
相关产品推荐
相关产品推荐

