Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.038 c
1-1110967349
Marat
2005-03-16 13:02
2005.03.27
DateTimePicker


8-1102433128
Sergonoid
2004-12-07 18:25
2005.03.27
LineTo или рисование по мм?


14-1109957542
G100M
2005-03-04 20:32
2005.03.27
Pantech g500 IMEI


3-1109700634
mefisto
2005-03-01 21:10
2005.03.27
Подключение файлов .mdf и .ldf сервера MSSQL7 к MSSQL2000


1-1110998105
Alex Romanskiy
2005-03-16 21:35
2005.03.27
GIF в Image





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский