Page 1 of 1
Работа с внешней длл.
Posted: 08.11.2013 19:05
by drabadan
Кто нибудь может написать гайд по использованию. В форме - "берем собираем библиотечку с исходным кодом Хеллоу ворлд, потом зовем из скрипта вот так".
Очень было бы интересно, а то в скриптах есть, а разобраться сложно!
Re: Работа с внешней длл.
Posted: 09.11.2013 4:18
by Vizit0r
Re: Работа с внешней длл.
Posted: 10.11.2013 14:51
by drabadan
не получается у меня подключить дллку... руки крюки - моска нет...
Delphi код моей библиотеки:
Code: Select all
library helloworld;
uses
System.SysUtils,
Vcl.Dialogs,
System.Classes,
stealth_script in '..\..\stealth_script.pas';
{$R *.res}
procedure OuterCall;//(str : String);
begin
//ShowMessage('Hello World');
Script.AddToSystemJournal('Hello world!');
end;
begin
//OuterCall;
end.
в скрипте:
Code: Select all
Program New;
procedure TestDll; external 'OuterCall@d:\helloworld.dll stdcall';
begin
//Body of Script
TestDll;
end.
что я делаю не так??
Re: Работа с внешней длл.
Posted: 10.11.2013 15:44
by nah nah
я хз делфи, но разве там не должно быть списка экспортируемых функций? в коде самой библиотеки?
edit кажется export
Re: Работа с внешней длл.
Posted: 10.11.2013 16:22
by Vizit0r
drabadan wrote:
не получается у меня подключить дллку... руки крюки - моска нет...
Delphi код моей библиотеки:
Code: Select all
library helloworld;
uses
System.SysUtils,
Vcl.Dialogs,
System.Classes,
stealth_script in '..\..\stealth_script.pas';
{$R *.res}
procedure OuterCall;//(str : String);
begin
//ShowMessage('Hello World');
Script.AddToSystemJournal('Hello world!');
end;
begin
//OuterCall;
end.
в скрипте:
Code: Select all
Program New;
procedure TestDll; external 'OuterCall@d:\helloworld.dll stdcall';
begin
//Body of Script
TestDll;
end.
что я делаю не так??
Code: Select all
....
exports
OuterCall;
begin
//OuterCall;
end.
ты бы сначала пробовал из дельфийской программы вызвать эту длл функцию, а потом уже из стелса.
и кстати, stdcall надо указать. А то ты в скрипте тип вызова ставишь как stdcall, а в длл это не прописываешь.
procedure OuterCall;stdcall;
дальше. String в параметрах использовать - совсем плохая идея. PChar - самое оно.
Гугл много еще чего интересного расскажет, например по словам "Dll на Delphi" "String в Delphi Dll" и т.д.
Re: Работа с внешней длл.
Posted: 10.11.2013 16:48
by drabadan
Vizit0r wrote:
Гугл много еще чего интересного расскажет, например по словам "Dll на Delphi" "String в Delphi Dll" и т.д.
не всегда знаешь о чем гугл спрашивать... Чаще всего когда хочешь узнать как коробок спичек донести из А в B гугл дает ответ про космолеты которые бороздят просторы вселенных, где никаких коробков уже 3 тысячи лет никто не встречал...
Code: Select all
//Delphi code:
procedure OuterCall; stdcall;
begin
//ShowMessage('Hello World');
Script.AddToSystemJournal('Hello world!');
end;
exports
OuterCall;
Code: Select all
//Stealth code:
Program New;
procedure TestDll; external 'OuterCall@d:\helloworld.dll stdcall';
begin
TestDll;
end.
Все равно не работает...

Re: Работа с внешней длл.
Posted: 10.11.2013 18:07
by Vizit0r
Vizit0r wrote:
ты бы сначала пробовал из дельфийской программы вызвать эту длл функцию, а потом уже из стелса.
не всегда знаешь о чем гугл спрашивать... Чаще всего когда хочешь узнать как коробок спичек донести из А в B гугл дает ответ про космолеты которые бороздят просторы вселенных, где никаких коробков уже 3 тысячи лет никто не встречал...
погугли "как правильно гуглить"

Re: Работа с внешней длл.
Posted: 10.11.2013 19:25
by Vizit0r
Code: Select all
Program New;
procedure TestDll(Msg : PChar); external 'OuterCall@d:\Stealth\my\Project7.dll stdcall';
begin
TestDll(('1111'));
end.
Code: Select all
library Project7;
uses
System.SysUtils,
VCL.Dialogs,
System.Classes;
procedure OuterCall(Msg : PAnsiChar); stdcall;
begin
ShowMessage(Msg);
end;
exports
OuterCall;
begin
end.