Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2009, 13:57   #1
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию DLL. Project *.exe faulted with message: 'priveleg instruction at 0x...'. Proccess stopped.

Что это? Как исправить?
Вот код дллки и проги:
Код:
var
  form1: tform1;
  getsimpletext: function(langrus: boolean): pchar;
  libhandle: thandle;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(sender: tobject);
begin
  {"Чистим" адрес функции от "грязи"}
  @getsimpletext := nil;
  {Пытаемся загрузить библиотеку}
  libhandle := loadlibrary('mydll.dll');
  {Если все ok}
  if libhandle >= 32 then
  begin
    {...то пытаемся получить адрес функции в библиотеке}
    @getsimpletext := getprocaddress(libhandle,'getsimpletext');
    {Если и здесь все ok}
  if @getsimpletext <> nil then
    {...то вызываем эту функцию и показываем результат}
    showmessage(strpas(getsimpletext(true)));
  end;
  {И не забываем освободить память и выгрузить dll}
  freelibrary(libhandle);
end;
Код:
library mydll;

uses
  sysutils,
  classes;

{Определяем функцию как stdcall}
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.
Ошибка вылетает при выходе из ButtonClick...
TwiX вне форума Ответить с цитированием
Старый 26.12.2009, 14:12   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

вы забыли stdcall при объявлении...
Код:
getsimpletext: function(langrus: boolean): pchar;stdcall;libhandle: thandle;
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 26.12.2009, 14:34   #3
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Спасибо! )
TwiX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Распаковка dll из exe SL1CK Общие вопросы Delphi 4 21.11.2009 19:46
Запуск Load.dll (бывшая Load.exe) в дереве проц-ов, Как запустить прогой на C# .dll-ку kapustin Общие вопросы .NET 10 23.09.2009 22:20
Получаю сообщение "This file is used by the project manager only and should be treated like the project f fs444 C++ Builder 1 22.09.2009 11:05
"Project Project1.exe raised class EConvertError with message'''is not a valid floating point value'." Doz1metr Помощь студентам 9 24.06.2009 19:06
как из EXE файла ...выташить сам проект(код,Project,Unit)??? ivp88 Общие вопросы Delphi 5 18.03.2007 23:41