![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка при вызове 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 динамически вызываешь?