Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.04;
Скачать: CL | DM;

Вниз

Две интересные ситуации с Dll.   Найти похожие ветки 

 
yuger ©   (2002-02-14 12:16) [0]

Ситуация №1:
Я написал Dll, которая работает со строками
В експортные функции я, как положено, передаю параметры и получаю результат как PChar.
Использую также некоторые другие (внутренние) функции - там я передаю параметры как string.
Для трасировки я промежуточные результаты выводил showmessage-ем.
Пришлось подключить Dialogs. после отладки я поубирал showmessage
и отключил dialogs. Она начала работать неправильно (не екзепшены и проч. а логика). Дописываю модуль dialogs - снова всеработает как часы. Исколесил Dialogs - никаких переопределений функций и типов не нашел.Мне посоветовали подключить ShareMem, но после этого она вообще не поггружается(ругается). Я ее динамически подгружаю.
В чем же тут дело? Из за Dialogs она получила размер 195Kb.
Без него 48Kb. Мне ОЧЕНЬ важен маленький размер. Что надо сделать
и в чем тут причина?
Ситуация №2:
Я динамически подгружаю Dll, потом выгружаю freelibrary и
спустя значительное время пытаюсь удалить, а система говорит, что библиотека занята.
После выхода из программы удалить уже удается.
(В моей программе я даю возможность красиво подключать и удалять плагины). Как это обойти.


 
Fellomena   (2002-02-14 12:25) [1]

По поводу ситуации 2:
Когда ты делаешь FreeLibrary ты не выгружаешь, а освобождаешь DLL. Windows не освобождает из под неё память намеренно. Потому что если вдруг твоё приложение снова запросит эту DLL накладные расходы на отображения из файла будут больше, нежели из памяти. Этот механизм используется Windows для ускорения работы программ (вернее оптимизации этой работы). Иногда это оправдывает себя, но иногда мешает.

По поводу ситуации 1:
А ты попробуй не передавать как string - используй Char и PChar или пользуйся преобразованием типов при передачи параметров типа String.


 
Digitman (M) ©   (2002-02-14 12:28) [2]

В DLL :
USES ShareMem, ... а затем уж - все прочие используемые ...



Страницы: 1 вся ветка

Текущий архив: 2002.03.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
1-9233
staratel
2002-02-13 15:29
2002.03.04
web


1-9215
forrest1
2002-02-15 09:57
2002.03.04
Развернуть узел дерева с помощью клавиатуры


1-9208
Fighter
2002-02-15 04:26
2002.03.04
Подскажите какой самый безглючный компонент FTP клиент?


1-9204
Loxly
2002-02-14 20:24
2002.03.04
Непонятки с обработчиком события OnKeyDown


3-9075
Vks
2002-02-05 12:19
2002.03.04
Есть несколько относительно больших баз......