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

Вниз

DLL: Privileged instruction !!!   Найти похожие ветки 

 
Луарвик   (2004-09-27 23:21) [0]

Че за фигня такая?
Вызываю процедуру так:
{Пытаемся загрузить библиотеку}
 LibHandle := LoadLibrary("Project1.dll");
 {Если все OK}
 if LibHandle >= 32 then begin
   {...то пытаемся получить адрес функции в библиотеке}
   @GetSimpleText := GetProcAddress(LibHandle,"GetSimpleText");
   {Если и здесь все OK}
   if @GetSimpleText <> nil then
     {...то вызываем эту функцию и показываем результат}
     {ShowMessage(StrPas(}GetSimpleText(True){))};
 end;
 {И не забываем освободить память и выгрузить DLL}
 FreeLibrary(LibHandle);

Это в библиотеке:

library Project1;
Uses SysUtils;  
{$R *.RES}  

function GetSimpleText(LangRus: Boolean): PChar; stdcall;
begin
 {В зависимости от LangRus возвращаем русскую (True) либо английскую (False) фразу}
 if LangRus then
   Result := PChar("Здравствуй, мир!")
 else
   Result := PChar("Hello, world!");
end;

{Директива exports указывает, какие функции будут экспортированы этой DLL}
exports GetSimpleText;

Begin  
End.  

Че такое?


 
Defunct ©   (2004-09-28 00:04) [1]

function GetSimpleText(LangRus: Boolean): ShortString;

Учимся читать комментарии при создании DLL


 
Defunct ©   (2004-09-28 00:06) [2]

В ту же степь:

Учимся читать подсказки(Hints) и предупреждения(Warnings) компилятора.


 
Луарвик   (2004-09-28 00:11) [3]

Ага, тут вот оно как:
ShowMessage(StrPas(GetSimpleText(True)));
А GetSimpleText я описал так:
function(LangRus: Boolean): PChar;
Уже выдает такую ошибку: "Privileged instruction at 0x009ebcbc"


 
Defunct ©   (2004-09-28 00:16) [4]

смотрите
http://delphimaster.net/view/1-1095698261/
пост [11]

function(LangRus: Boolean): PChar;
Вот именно в этом и ошибка.


 
Луарвик   (2004-09-28 00:23) [5]

В чем именно? PChar нельзя юзать в DLL?


 
Луарвик   (2004-09-28 00:27) [6]

Ага, понял!!! Вот как надо было:
var
 Form1: TForm1;
 GetSimpleText: function(LangRus: Boolean): PChar;stdcall;

Пасибо!


 
Defunct ©   (2004-09-28 00:45) [7]

PS: PChar тоже лучше не использовать, а то могут появиться другие ошибки см.[1, 2]. К тому же PChar помоему требует явного освобождения памяти при таком использовании как у вас (насчет последнего могу и ошибаться), но все равно лучше не рисковать.


 
GuAV ©   (2004-09-28 01:44) [8]


> К тому же PChar помоему требует явного освобождения памяти
> при таком использовании как у вас

не-а. строки будут константами вставленными в код. память явно не выделяется и явного освобождения не требует, при попытке освободить будет AV.

> PS: PChar тоже лучше не использовать

PChar как раз можно.


 
GuAV ©   (2004-09-28 01:47) [9]


> при попытке освободить будет AV.

не уверен точнее что непременно будет но по крайней мере возможно.


 
Игорь Шевченко ©   (2004-09-28 10:19) [10]


>  К тому же PChar помоему требует явного освобождения памяти
> при таком использовании как у вас (насчет последнего могу
> и ошибаться), но все равно лучше не рисковать.


Матчасть учить.


 
Суслик ©   (2004-09-28 11:55) [11]

2defunct
Ты, братец, советуешь в очередной раз фиг знает что.
Что за манера? :-\


 
Defunct ©   (2004-09-28 12:32) [12]

посмотрю я когда там будут динамические строки вместо этих "Hello world", тада вспонится и матчасть, и манера.


 
Игорь Шевченко ©   (2004-09-28 12:34) [13]

Defunct ©   (28.09.04 12:32) [12]

Матчасть учить. Думать над выученным.


 
Суслик ©   (2004-09-28 12:38) [14]


> 12] Defunct ©   (28.09.04 12:32)
> посмотрю я когда там будут динамические строки вместо этих
> "Hello world", тада вспонится и матчасть, и манера.

Дай тебе попробую объяснить.
Не стоит говорить о том, о чем имеешь неуверенные знания. Ошибаются абсолютно все - такое бывает. Но ты это делаешь регулярно и не признаешь ошибок. Потомоу и совет такой - матчасть.


 
Луарвик   (2004-09-28 15:11) [15]

Гы
Defunct мне говорил не о том, но все же наставил на рабочий пример и я нашел ошибку у себя. Главное, что помог чел! Пасибо!



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

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

Наверх




Память: 0.47 MB
Время: 0.039 c
3-1096970833
GanibalLector
2004-10-05 14:07
2004.10.31
select


1-1097668698
Students
2004-10-13 15:58
2004.10.31
Закладка в PageControl


14-1097557906
RavenD
2004-10-12 09:11
2004.10.31
кто юзал TdxDBTreeList ?


4-1095927456
Arnold
2004-09-23 12:17
2004.10.31
Какое сообщение возникает при изменении что либо на форме


9-1088731496
Xerx
2004-07-02 05:24
2004.10.31
Нужен совет!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский