Включить Delphi XE RTTI только для некоторых классов

Я пытаюсь включить RTTI только для подмножества моих классы.

Причина в том, что для тех классов, для которых мне нужен RTTI, я хочу RTTI и для общедоступных методов, но если это разрешено для всего проекта, то все общедоступные методы из всех классов попадают в окончательный исполняемый файл. Это в основном отключает интеллектуальное связывание, поскольку компилятор считает, что каждый общедоступный метод может быть вызван во время выполнения, и, таким образом, в конечном итоге компилирует почти все, и кухня погружается в исполняемый файл ...

Я пробовал несколько вещей :

  • Отключение RTTI на уровне проекта с помощью {$ RTTI EXPLICIT METHODS ([]) PROPERTIES ([]) FIELDS ([])} , а затем повторное включение его для соответствующих модулей приводит к вылетает во время компиляции (AV где-то в компиляторе) в директиве $ RTTI.
  • Отключение RTTI на уровне проекта и последующее включение его на уровне класса компилируется, но во время выполнения это приводит к неквалифицированному AV глубоко в "Rtti.pas" при попытке доступа к RTII для открытых классов
  • Управление RTTI с помощью директив $ RTTI, встроенных в ".inc", все блоки используют результаты в случайном AV во время компиляции (всегда в строке $ RTTI директива, но не всегда для одного и того же устройства).

Есть другие идеи?

9
задан Eric Grange 26 August 2011 в 08:16
поделиться