Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.27;
Скачать: 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.036 c
3-1109801748
RaS
2005-03-03 01:15
2005.03.27
Как это сделать?


1-1110564923
Chroot
2005-03-11 21:15
2005.03.27
Прожиг дисков и печать документов


14-1110016285
Гаврила
2005-03-05 12:51
2005.03.27
Перлы из резюме :-)


1-1111043453
naum
2005-03-17 10:10
2005.03.27
Загрузка C шной DLL из Delphi


14-1109173559
Piter
2005-02-23 18:45
2005.03.27
TimeZero