Как уменьшить размер DLL снова - PullRequest
0 голосов
/ 26 марта 2010

Моя dll была увеличена во много раз по какой-то причине. Я начинаю оценивать ситуацию:

  1. Источник не изменился.
  2. Отладочная информация везде выключена.
  3. Dll использует пакет "Pack", но не включает в себя опции Runtime Packages.
  4. Я сравнил новую dll со старой версией, которую dll считал инструментальной средой PE Explore. В новой DLL я нахожу много модулей с неявно импортированным префиксом 'ec' в отличие от старой DLL.
  5. Пакет "Pack" с использованием компонентов ecControls
  6. Dll не использует явный вызов единиц ecControls.

Почему модули ecControls импортируются в dll? У кого-нибудь есть совет?

Ответы [ 3 ]

2 голосов
/ 26 марта 2010

Если модуль в ecControls случайно используется, будет вызван его раздел инициализации (если он есть), и вы можете установить точку останова, чтобы попытаться выяснить, откуда он вызывается. Вы также можете поместить точку останова в System.InitUnits (с включенной отладкой dcus), чтобы увидеть, инициализируется ли какой-либо модуль в ecControls.

Я использую эту технику в Forms.pas при работе с dll, чтобы убедиться, что Forms.pas не был связан случайно.

1 голос
/ 27 марта 2010

Почему вы не просто переименовываете директорию ecControls и перестраиваете (сначала, конечно, удаляя пакет)? Это позволит вам увидеть, где именно на него ссылаются.

1 голос
/ 26 марта 2010

Если ваша DLL использует пакет, который не включен в список Runtime Packages, то его модули будут неявно импортированы в вашу DLL вместо того, чтобы связываться с пакетом времени выполнения. Это, вероятно, то, что вызывает это прямо там. Попробуйте добавить пакет в список пакетов времени выполнения и посмотрите, исчезнет ли проблема ecControls.

...