Вниз
Скачать: CL | DM;

DLL - Plugin   Найти похожие ветки 

← →
SkyRanger ©   (2005-03-09 09:38) [0]

Вообщем решил я поробовать сделать плагин, создаю такую вот DLL:


library PkgUtils;

uses
 SysUtils,
 Classes;

const

 CAutorStr = "SkyRanger";
 CInfoStr  = "Plugin 1.0";

function GetPluginAutor:String; stdcall;
begin
 Result:=CAutorStr;
end;

function GetPluginInfo:String; stdcall;
begin
 Result:=CInfoStr;
end;

function MyProc:String; stdcall;
begin
 Result:=CInfoStr;
end;

exports
 GetPluginAutor,
 GetPluginInfo,
 MyProc;

{$R *.res}

begin
end.



и ее пробую загрузить проверить что она плагин:


var
 DllH :HModule;
 DllProcPtr : TDllProc;

 if DllH=0 then
 begin
   DllH:=LoadLibrary("PkgUtils.dll");
   if DllH=0 then
   begin
     ShowMessage("Ошибка загрузки DLL");
     exit;
   end;
   @DllProcPtr := GetProcAddress(DllH,"GetPluginAutor");
   if not Assigned(DllProcPtr) then
     FreeLibrary(DllH);
     DllH:=0;
     ShowMessage("Данный файл не является плагином");
     exit;
 end;
 DllProcPtr;
 FreeLibrary(DllH);
 DllH:=0;


и ничего не получается... Где я ошибся, вроде все делал как написано в FAQ...


← →
Sergey_Masloff   (2005-03-09 09:41) [1]

Если ничего не получается
значит все неправильно.


← →
Думкин ©   (2005-03-09 09:42) [2]

Для начала:

uses  SysUtils,
.....
function GetPluginInfo:String


← →
Sergey_Masloff   (2005-03-09 09:43) [3]

Как минимум если передаешь строки (хоть это и изврат) то где у тебя ShareMem?


← →
BiN ©   (2005-03-09 09:44) [4]

SkyRanger ©   (09.03.05 09:38)
... Где я ошибся


Читаем комментарий, который ты удалил, до полного просветления.

Да, и stdcall у тебя к чему?


← →
Чапаев ©   (2005-03-09 10:11) [5]

1. Как объявлен TDllProc?
2. Таки или string -> PChar, или прочти комментарий, который пишет DLL wizard.


← →
SkyRanger ©   (2005-03-10 02:38) [6]

Вот новая версия и все равно нефига не работает!


TDllProc = function:PChar;
var
 Form1: TForm1;
 DllH :HModule;
 DllProcPtr : TDllProc;

function GetPluginAutor:PChar; external "Plugin.dll";

if DllH=0 then
 begin
   DllH:=LoadLibrary("PkgUtils.dll");
   if DllH=0 then
   begin
     ShowMessage("Ошибка загрузки DLL");
     exit;
   end;
   M.Lines.Add(GetPluginAutor);
   @DllProcPtr := GetProcAddress(DllH,"GetPluginAutor");
   if not Assigned(DllProcPtr) then
     FreeLibrary(DllH);
     DllH:=0;
     ShowMessage("Данный файл не является плагином");
     exit;
 end;
 DllProcPtr;
 FreeLibrary(DllH);
 DllH:=0;


Все строки как Pchar


library PkgUtils;

uses
 Classes;

const

 CAutorStr = "Vasily V. Altunin, 2005";
 CInfoStr  = "DLL plugin";

function GetPluginAutor:PChar;
begin
 Result:=CAutorStr;
end;

function GetPluginInfo:PChar;
begin
 Result:=CInfoStr;
end;

function MyProc:PChar;
begin
 Result:=CInfoStr;
end;

exports
 GetPluginAutor,
 GetPluginInfo,
 MyProc;

begin
end.


Причем M.Lines.Add(GetPluginAutor); работает как положенно но признавать как плагин все равно DLL не хочет…


← →
SkyRanger ©   (2005-03-10 09:01) [7]

Тааак...
Пора завязывать задавать вопросы рано утром и в конце рабочего дня... Туплю...
Все заработало, всем спасибо!



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.027 c
14-1109753342
NeyroSpace
2005-03-02 11:49
2005.03.27
Нужен эмулятор медленного компьютера для запуска


8-1102669878
siv14
2004-12-10 12:11
2005.03.27
вращение фигур


3-1109168158
Dyusha
2005-02-23 17:15
2005.03.27
ADOQuery и QReport - создание отчета


9-1104704810
Trip
2005-01-03 01:26
2005.03.27
Потестируйте мой скринсэйвер на GLScene ?


9-1104316737
Trimp
2004-12-29 13:38
2005.03.27
Как задать SmoothNormal?




   Наверх