Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.006 c
3-9075
Vks
2002-02-05 12:19
2002.03.04
Есть несколько относительно больших баз......


1-9203
Анонимщик
2002-02-14 10:54
2002.03.04
Помогите с печатью метафайла


1-9187
Termik
2002-02-14 15:14
2002.03.04
Отладчик Delphi


1-9201
kingdom
2002-02-14 16:44
2002.03.04
Как сделать мигание формы в свернутом виде?


6-9264
Mag
2001-12-14 12:55
2002.03.04
Через какой компонент можно управлять по IPX другим компом???




   Наверх