Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.10.2012, 00:07
MrBadge MrBadge вне форума
Прохожий
 
Регистрация: 30.12.2009
Сообщения: 28
Репутация: 10
По умолчанию

Есть Dll, написанная на С++. Описание функций и процедур там такое:

Код:
DLL_EXP void __stdcall Name2(int param1, int param2);
DLL_EXP void __stdcall Name3(char* param1);
DLL_EXP char* __stdcall Name5();

Необходимо подключить эту Dll к проекту на Delphi. Делаю так:

Код:
unit DllWork;

interface
uses Windows;
var
  Name2: procedure(param1: Integer; param2: Integer); stdcall;
  Name3: procedure(param1: string); stdcall;
  Name5: function(): string; stdcall;
  DllHandle: THandle;
 
procedure LoadDllandProcs(DllName: string);
procedure Name2_D(param1, param2: Integer);
procedure Name3_D(param1: string);
function Name5_D(): string;

implementation

procedure LoadDllandProcs(DllName: string);
begin
  @Name2:= nil;
  @Name3:= nil;
  @Name5:= nil;
  DllHandle := LoadLibrary(PChar(DllName));
  if DllHandle >= 32 then
  begin
    @Name2 := GetProcAddress(DllHandle, 'Name2');
    @Name3 := GetProcAddress(DllHandle, 'Name3');
    @Name5 := GetProcAddress(DllHandle, 'Name5');
  end;
end;

procedure Name2_D(param1, param2: Integer);
begin
  if @Name2 <> nil then
    Name2(param1, param2);
end;

procedure Name3_D(param1: string);
begin
  if @Name3<> nil then
    Name3(param1);
end;

function Name5_D(): string;
begin
  if @Name5 <> nil then
    Result := Name5;
end;

end.

При выполнении появляются ошибки чтения нулевой и других ячеек памяти (по всей видимости, ошибка в DLL). Но хотелось бы узнать, как правильно подгружать и вызывать процедуры и функции из библиотек? Особенно, с функцией, возвращающей char*

Последний раз редактировалось Bargest, 05.10.2012 в 00:24.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:49.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025