Вниз
Скачать: 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.023 c
1-1110907899
ТехникПТО
2005-03-15 20:31
2005.03.27
Как с помощью RxtrayIcon свернуть программу в трей и обратно??


1-1110451078
Оля
2005-03-10 13:37
2005.03.27
Защита от отладчика


1-1110801075
lehich
2005-03-14 14:51
2005.03.27
добавить небольшой exe в проект и использование его


14-1110287513
iZEN
2005-03-08 16:11
2005.03.27
Монитор Электрик - офигительно приятная система.


3-1109071314
Нулевой
2005-02-22 14:21
2005.03.27
Проблема скорости показа записей.




   Наверх