Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];

Вниз

Две интересные ситуации с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.004 c
1-9216
DJ X
2002-02-14 16:28
2002.03.04
Подбросте пример кода


6-9252
Angel_Ua
2001-12-15 13:20
2002.03.04
Как выключить комп по сети при помощи Делфи (Win2k)


7-9321
User_OKA
2001-11-28 15:25
2002.03.04
System Tray


3-9052
sgs
2002-02-06 12:13
2002.03.04
Был бы очень рад если кто помог бы с запросом...


7-9307
CyberSnake
2001-11-30 00:52
2002.03.04
NTFS и свободное место





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский