Главная страница
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.046 c
1-1110404738
Мартын
2005-03-10 00:45
2005.03.27
Написал программу для выдирания паролей из Dial-Up, но...


6-1106561507
Stalker_
2005-01-24 13:11
2005.03.27
Отправка почты через idSMTP


1-1110786259
x_shura
2005-03-14 10:44
2005.03.27
Ошибка отрисовки Virtual TreeView


1-1110531349
lehich
2005-03-11 11:55
2005.03.27
диалог выбора папки?


1-1110877169
Catalyst
2005-03-15 11:59
2005.03.27
Помогите со строчкой? пишет ошибку если стринг >255