Форум: "Основная";
Текущий архив: 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.04 c