我编译了我的应用程序项目的发布版本。当我用二进制编辑器查看我编译的最终exe时,我可以看到我自己创建的对象的所有类名,例如:TPolygon,TRectangle等等,作为exe内的二进制文本数据。
我如何从exe中删除此信息。我尝试在dpr中删除禁用RTTI:
{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
但不是运气,任何提示。
答案 0 :(得分:2)
如果要从可执行文件中删除类名,那么您的应用程序将停止工作。编译到应用程序中的.dfm文件包含类名。运行时流框架需要能够在类注册表中查找这些类,如果没有名称,那么表单及其属性将无法流式传输。
最重要的是,正如AlexSC指出的那样,TObject.ClassName
的实现要求类的名称出现在可执行文件中。