Форум: "WinAPI";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
ВнизРобота с DLL Найти похожие ветки
← →
stepan_mk © (2004-01-30 15:43) [0]после вихода из процедури которая загружала dll ошиПка Access violation at address ... Write of address 00000000. Вот сорси
Dlllibrary schema;
uses
SHAREMEM,SysUtils, Classes, Ora, Dialogs;
{$R *.res}
function Showschema(var Orasession:TOrasession):boolean;
begin
Showmessage("Hi I""m DLL");
result:=true;
end;
exports
Showschema;
end.
Программаprocedure TMainForm.N21Click(Sender: TObject);
var res:boolean;
begin
H:=LoadLibrary("schema.dll");
if H<>0
then
begin
Showschema:=GetProcAddress(H,"Showschema");
res:=Showschema(Datamodule2.Orasession1);
while not res do
begin
end;
while FreeLibrary(H) do;
end;
end;
Showmessage отображается нормально. А вот ошипка даже не дает вийти из программи.
Что я опять не так делаю?
Когда коментирую вигрузку библиотеки то ошибка Privileged instruction
← →
Digitman © (2004-01-30 16:15) [1]
> SHAREMEM
осознанно указан ? и в хост-проекте тоже ?
а вот этот код требует твоего пояснения :
while not res do
begin
end;
while FreeLibrary(H) do;
хоть убей не пойму , зачем здесь эти циклы
← →
stepan_mk © (2004-01-30 16:29) [2]
SHAREMEM
Есть и в основном модуле программиwhile not res do
begin
end;
Согласен ето лишнееwhile FreeLibrary(H) do;
Так рекомендовали в книге делать, что б бить увереним что dll вигрузилась. Тоесть вигружать до тех пор пока не будет вигружена
← →
Digitman © (2004-01-30 16:47) [3]
> SHAREMEM Есть и в основном модуле программи
а чем это оправдано ?
из приведенного кода это неочевидно
> Так рекомендовали в книге делать, что б бить увереним что
> dll вигрузилась. Тоесть вигружать до тех пор пока не будет
> вигружена
чушь там написали.
ну да к делу это не относится.
Access violation at address ...
что реально видишь вместо троеточия ? это важно !
← →
stepan_mk © (2004-01-30 16:54) [4]Сейчас убрал из dll sharemem, и тпереь постоянно после вихода их процки видает сообщение
Access violation at ADDRESS 00D64320. Read of address FFFFFFD6
Когда убираю sharemem и из приложения то
Access violation at ADDRESS 00CB4320. Read of address FFFFFFCB
Когда убираю sharemem и из приложения (dpr) а добавляю в unit
то Privileged instruction
← →
Digitman © (2004-01-30 16:59) [5]я так и не понял, зачем ты sharemem туда-сюда гоняешь ..
он там зачем вообще изначально был ? можешь вразумительно ответить ?
и еще ...
а ты соглашение о вызове соблюл хоть ?
← →
Digitman © (2004-01-30 17:01) [6]
> чушь там написали.
уточню - именно для стат.загрузки это действительно чушь
← →
stepan_mk © (2004-01-30 17:07) [7]SHAREMEM, в той же книге рекомендовали включать и в Длл и в модуле, причем sharemem должна била стоять первая в списке. Включать как будто для того чтоб со строками нормально работало.
Что значит соблюл ли я соглашение о визове?
Наверное ето
showschema: Function (var Orasession:TOrasession):boolean; stdcall;
Я уже кстати переделал через процедуру В Dll переписал showschema как процедуру и так же в модуле но ошибка та же.
← →
Digitman © (2004-01-30 17:12) [8]
> Включать как будто для того чтоб со строками нормально работало
ну ты хоть вник бы, о каких конкретно ситуациях работы со строками речь там идет)
вот декларация твоей ф-ции в DLL :
function Showschema(var Orasession:TOrasession):boolean;
а вот - в хост-приложении :
showschema: Function (var Orasession:TOrasession):boolean; stdcall;
разница есть, как думаешь ?
← →
stepan_mk © (2004-01-30 17:17) [9]Речь идет о длинних стороках.
function Showschema(var Orasession:TOrasession):boolean;
Разници, честно говоря, не вижу
showschema: Function (var Orasession:TOrasession):boolean; stdcall;
← →
Digitman © (2004-01-30 17:21) [10]
> Разници, честно говоря, не вижу
ну как же ? а stdcall ? я ж специально жирным выделил !
это и есть соглашение о вызове ! и оно должно быть одинаковым для вызывающего и вызываемого кода !
← →
stepan_mk © (2004-01-30 17:24) [11]понял шас попробую
← →
stepan_mk © (2004-01-30 17:26) [12]Супер!
Добавил stdcall в dll и все заработало.
Спасибо.
← →
Digitman © (2004-01-30 17:30) [13]
> stepan_mk © (30.01.04 17:26) [12]
а я бы наоборот и там и там убрал, если точно знаю, что иных потенциальных сред взаимодействия кроме Делфи не будет ... ни для хост-приложения ни для библ-ки
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.037 c