Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.07.2007, 18:22
Аватар для mav_c
mav_c mav_c вне форума
Активный
 
Регистрация: 26.03.2007
Адрес: Москва
Сообщения: 287
Репутация: 30
По умолчанию Exception при FreeLibrary

Всем привет!
Третий день бьюсь не могу решить проблему!
Имеется dll в ней создаётся TIBDataBase.
Из вызывающего приложения передают туда Handle.
Всё моя dll'ка отрабатывает и при FreeLibrary выскакивает Exception.
Что интересно ошибка обращения к памяти по адресу 0x0000000000.
Может у кого есть какие мысли. Я всё вроде испробовал.
__________________
---------------------------------------------
Программирование - не профессия, а стиль жизни
Ответить с цитированием
  #2  
Старый 13.07.2007, 17:48
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

У меня очень похожая ситуация. В dll есть процедура и функция. С процедурой все нормально, а с функцией не очень: как раз во время FreeLibrary появляется Exception. Как тебе помочь не знаю, сам не исправил.
Ответить с цитированием
  #3  
Старый 02.09.2007, 23:12
dimka dimka вне форума
Прохожий
 
Регистрация: 02.09.2007
Сообщения: 2
Репутация: 10
По умолчанию

И у меня то же самое, как быть не знаю..
Ответить с цитированием
  #4  
Старый 02.09.2007, 23:43
dimka dimka вне форума
Прохожий
 
Регистрация: 02.09.2007
Сообщения: 2
Репутация: 10
По умолчанию

а вот и ответ (борланд подсказал ):
{ Important note about DLL memory management: ShareMem must be the
first unit in your library's USES clause AND your project's (select
Project-View Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes. ShareMem is the interface unit to
the BORLNDMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. }
Ответить с цитированием
  #5  
Старый 03.09.2007, 11:53
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Если я понял, то в код проекта нужно добавить модуль ShareMem. Так? Или я не правильно понял?
Ответить с цитированием
  #6  
Старый 03.09.2007, 18:09
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

Да, в код DLL, причем самым первым. Но это очень косо - вместе с DLL придется поставлять BORLNDMM.DLL.
Для того, чтобы избежать этого, юзайте в качестве строковых параметров (для передачи строки) не String, а PChar или ShortString.
__________________
THE CRACKER IS OUT THERE
Ответить с цитированием
  #7  
Старый 03.09.2007, 19:33
Аватар для mav_c
mav_c mav_c вне форума
Активный
 
Регистрация: 26.03.2007
Адрес: Москва
Сообщения: 287
Репутация: 30
Смех

Цитата:
Сообщение от mav_c
Всем привет!
Третий день бьюсь не могу решить проблему!
Имеется dll в ней создаётся TIBDataBase.
Из вызывающего приложения передают туда Handle.
Всё моя dll'ка отрабатывает и при FreeLibrary выскакивает Exception.
Что интересно ошибка обращения к памяти по адресу 0x0000000000.
Может у кого есть какие мысли. Я всё вроде испробовал.
В коде была ссылка на другую длл(статика)
__________________
---------------------------------------------
Программирование - не профессия, а стиль жизни
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:20.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter