我正在尝试仅为我的类的子集启用RTTI.
原因是对于那些我想要RTTI的类,我也想在公共方法上使用RTTI,但如果在项目范围内启用它,那么所有类的所有公共方法都会进入最终的可执行文件.这基本上关闭了智能链接,因为编译器认为每个公共方法都可以在运行时调用,因此最终编译几乎所有东西,厨房沉入可执行文件......
我尝试了几件事:
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}然后为相关单元重新启用它会导致在$ RTTI指令的编译时(编译器中某处的AV)崩溃.还有其他想法吗?
编译器错误作为 QC 98261 提交以供 Embarcadero 考虑。
运行时 AV 与属性相关,因此解决方法是确保(手动地,不存在编译器错误或警告)暴露类中使用的属性都具有 RTTI,否则您将得到不合格的运行时 AV。
只要在单元的“unit”语句之前使用 $RTTI 指令,编译器 AV 就会发生,如果将其放置在 AV 不发生且有效之后。
| 归档时间: |
|
| 查看次数: |
1147 次 |
| 最近记录: |