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

Вниз

Access Violation в DLL   Найти похожие ветки 

 
Dima(Other)   (2003-10-02 09:43) [0]

Вот кусок DLL-ки. На DM лежит толко ADOConnection, со свойством Connected = FALSE;
Обе експортируемые функции в основной программа подключаются статически.
Запускаем программу, и НЕ ИСПОЛЬЗУЯ функции из DLL закрываем её. Соответсвенно
ADOConnection к базе на подключается. Так вот, на DM.Free происходит Access Violation.
Непонятно почему, ведь с DLL ничего, кроме инициализации не делалось...
Если создание и уничтожение DM запихнуть внутрь каждой функции, то всё нормально...
Объясните, плз, почему это может не работать...

{$R *.RES}
exports
CardDlgCreate,
FullCardViewCreate;

procedure DllEntryPoint(Reason: Integer);
begin
case Reason of
DLL_PROCESS_ATTACH: begin
CoInitialize(nil);
DM := TDM.Create(nil);

end;
DLL_PROCESS_DETACH: begin
DM.Free;
CoUnInitialize;
end;
end;
end;

begin
DllProc := @DllEntryPoint;
DllEntryPoint(DLL_PROCESS_ATTACH);
end.


 
Radionov Alexey ©   (2003-10-02 09:48) [1]

sheremem используешь?


 
Radionov Alexey ©   (2003-10-02 09:49) [2]

хотел сказать "sharemem" :)


 
Dima(Other)   (2003-10-02 09:49) [3]

Нет, а зачем он нужен? Строки то не передаются!


 
Radionov Alexey ©   (2003-10-02 09:57) [4]

Пока у меня одни домыслы...
Попробуй из DllEntryPoint вызывать также старую ее версию. Мало ли... :)))


 
Radionov Alexey ©   (2003-10-02 10:08) [5]

Кстати, может существенно следущее:
Вот описание DllEntryPoint из Help.

BOOL WINAPI DllEntryPoint(

HINSTANCE hinstDLL, // handle to DLL module
DWORD fdwReason, // reason for calling function
LPVOID lpvReserved // reserved
);

Есть разница. :))


 
Radionov Alexey ©   (2003-10-02 10:13) [6]

Сорри, все правильно. Это я гоню.

Но без кода вряд ли что-то придумаю.


 
Radionov Alexey ©   (2003-10-02 10:28) [7]

Все-таки попробуй поставить sharemem. Если ничего не измениться, будем думать :)
Дело в том, что твой пример у меня твой пример тоже не работает, если нет sharemem. А с ним - все ok!



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

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

Наверх




Память: 0.48 MB
Время: 0.025 c
7-40699
Номолос
2003-07-26 09:16
2003.10.13
Как получить список всех носителей информаци?


1-40437
Charly
2003-10-02 20:26
2003.10.13
TPageControl -> AllowChange


14-40635
Nick-From
2003-09-18 10:14
2003.10.13
Про ShellExecute


14-40629
Jeer
2003-09-24 16:12
2003.10.13
Что нужно делать


14-40664
KSergey
2003-09-22 17:05
2003.10.13
Приобретение книги