Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка при вызове DLL


stone ©   (2002-11-05 15:18:00) 

При вызове DLL возникает ошибка:
---------------------------
Debugger Exception Notification
---------------------------
Project fcpclnt.exe raised exception class EOleSysError with message "CoInitialize has not been called". Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
может кто сталкивался с подобным?


stone   (2002-11-06 09:21:00) [1]

linage эта функция просто модально отображает форму

Form1 := TForm1.create(Application);
try
Result = Form1.ShowModal = mrOk;
finally
Form1.Free;
end;


linage   (2002-11-05 17:10:00) [2]

слушай, а может exception вываливается во время работы твоей функции?


stone   (2002-11-05 17:00:00) [3]

linage пробовал и через процедуру, как с параметрами, так и без - результат тот же


stone   (2002-11-05 16:59:00) [4]

aus а применительно к моей ситуации? я пробовал CoInitialize(@ShowOptions), но результат тот же.


linage   (2002-11-05 16:58:00) [5]

Попробуй вместо функции ShowOptions, использовать процедуру ShowOptions(var b:boolean)


aus   (2002-11-05 16:53:00) [6]

uses ActiveX;
....................
initialization
CoInitialize;
finalization
CoUnInitialize;
end.


stone   (2002-11-05 16:34:00) [7]

if not (@ShowOptions = nil) then
if ShowOptions then <- "CoInitialize has not been called"
ShowMessage("Text of message");
finally
FreeLibrary(LibHandle); <- too many consecutive exceptions
end;


linage   (2002-11-05 16:24:00) [8]

А на каком шаге вылетает exception?


stone   (2002-11-05 16:18:00) [9]

type
TShowOptions = function:Boolean; stdcall;
...

implementation

procedure TfrmMainForm.mmiOptionsClick(Sender: TObject);
var
LibHandle : THandle;
ShowOptions : TShowOptions;
begin
LibHandle := LoadLibrary("options.dll");
try
if LibHandle = 0 then
raise Exception.Create("Unable to load DLL");
@ShowOptions := GetProcAddress(LibHandle, "ShowOptions");
if not (@ShowOptions = nil) then
if ShowOptions then
ShowMessage("Text of message");
finally
FreeLibrary(LibHandle);
end;
end;


linage   (2002-11-05 16:16:00) [10]

Ну этот ощначает, что она не создала дескриптор на твою библиотеку!
А можешь привести код, как ты ее подгружаешь?


stone   (2002-11-05 16:11:00) [11]

мало того, при выполнении

finally
FreeLibrary(LibHandle);
end;

выдает

---------------------------
Information
---------------------------
Project D:\Project\MIDAS\fcpclnt\bin\fcpclnt.exe raised too many consecutive exceptions: "access violation at 0x00000000: read of address 0x00000000". Process Stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------


stone   (2002-11-05 16:07:00) [12]

linage

Да динамически


Alex4444444444   (2002-11-05 16:05:00) [13]

Mozhet, nado CoInitialize vyzvat"?


linage   (2002-11-05 16:03:00) [14]

ты DLL динамически вызываешь?


Наверх

Титульная страница Поиск, карта сайта Написать письмо