Форум: "Начинающим";
Текущий архив: 2009.12.13;
Скачать: [xml.tar.bz2];
Вниз<B>DLL</B> не грузится, если в ней <B>TChart</B> Найти похожие ветки
← →
vlad2 (2009-10-23 14:27) [40]
> Сергей М. © (23.10.09 13:10) [39]
>
> Не верю.
И правильно :).
Когда создал голое приложение без тичарта, длл нормально загрузилась. Тогда стал внимательно смотреть свой проект (он довольно большой и закрученный) и нашёл-таки маленький старый паршивый юнит со ссылкой на тичарт, который в данном приложении, конечно, не нужен. Это была последняя ссылка, после удаления которой всё пошло.
Большое спасибо Сергею М. и Игорю Шевченко, чьи посты подвигли меня на более жёсткий досмотр проекта.
← →
Сергей М. © (2009-10-23 14:32) [41]
> vlad2 (23.10.09 14:27) [40]
Ну победить-то ты победил, с чем тебя и поздравляем, а вот где была засада и кто в ней сидел - ты, видимо, так и не понял)
← →
vlad2 (2009-10-23 14:36) [42]
> Сергей М. © (23.10.09 14:32) [41]
>
> где была засада и кто в ней сидел
?
← →
Сергей М. © (2009-10-23 14:50) [43]
> vlad2 (23.10.09 14:36) [42]
И хост-приложение и DLL при включенных крыжиках использования ран-тайм пакетов пользуют один и тот же экз-р RTL, который ведет списки зарегистрированных классов.
Стартует хост-приложение и при инициализации юнита тичарт-движка (ибо он фигуририрует в uses) регистрирует в RTL соотв.классы, в т.ч. TChartAxisTitle.
Далее хост-приложение грузит либу, в которой в uses также фигурирует тичарт-движок, который для инициализации получает управление, при этом лезет в ту же RTL для регистрации тех же классов, которые там ранее были зарегистрированы хост-приложением, и получает при этом отлуп в виде исключения "A class named ... already exists", ибо в одном и том же списке зарегистрированных классов НЕ может быть двух одноименных классов.
← →
vlad2 (2009-10-23 16:16) [44]
> Сергей М. © (23.10.09 14:50) [43]
А почему же этого не происходит, если в хост-приложение мы включаем tee?
← →
Leonid Troyanovsky © (2009-10-23 16:20) [45]
> vlad2 (23.10.09 16:16) [44]
> А почему же этого не происходит, если в хост-приложение
> мы включаем tee?
Видимо, в борьбе под ковром побеждает хост.
--
Regards, LVT.
← →
Сергей М. © (2009-10-23 16:27) [46]
> vlad2 (23.10.09 16:16) [44]
Хост-приложение при инициализации грузит пакет tee, тот в свою очередь при своей инициализации регистрирует в RTL свои классы.
Теперь ты грузишь свою либу. Система же при загрузке либы видит, что tee уже имеется в АП процесса и не грузит ее, соотв-но повторная иниц-ция tee не происходит.
← →
vlad2 (2009-10-23 16:38) [47]
> Сергей М. © (23.10.09 16:27) [46]
Большое спасибо, Сергей. Теперь понятно.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.12.13;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.007 c