PDA

View Full Version : مبتدی: مشکل در استفاده از DLL



کامروا
پنج شنبه 09 آذر 1391, 16:51 عصر
سلام
یک پروسیجر نشوتم برای چاپ یک پیغام. بشکل زیر :


library myfirst;

uses
SysUtils,
Classes,
Windows,
Dialogs;

{$R *.res}
Procedure test;export;
begin
ShowMessage('Hello From Delphi :)');
end;
exports
test;
begin
end.

و توی برنامه از طریق این کد خواستم دسترسی داشته باشم به این پروسیجر :


type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure test;external 'myfirst.dll';
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
test;
end;

end.

ایم فایل myfirst.dll هستش و در کنار فایل اجرایی برنامه قرارش دادم
اما داره از

procedure test;external 'myfirst.dll';

خطا میگیره !!

ممون میشم راهنمایی کنید

تشکر

Mask
پنج شنبه 09 آذر 1391, 16:58 عصر
واسه چی رفتی تو کلاس فرم تعریفش کردی؟
باید جدا زیر implementation تعریفش کنی.

کامروا
پنج شنبه 09 آذر 1391, 17:03 عصر
واسه چی رفتی تو کلاس فرم تعریفش کردی؟
باید جدا زیر implementation تعریفش کنی.
ممنون درست شد.
فقط وقتی روی Button کلیک میکنم که پیغام روچاپ کنه خطای Stack Overflwo میده !

Mask
پنج شنبه 09 آذر 1391, 17:46 عصر
مشکل از جای دیگست. من تست کردم مشکلی نداشت.

کامروا
پنج شنبه 09 آذر 1391, 18:20 عصر
ممنون درست شد.

توی سی شارپ یک تابع نوشتم :

public int mul(int a)
{
return a*2;
}

و با نام mul.dll ذخیرش کردم.
حالا میخوام توی دلفی این تابع رو صدا بزنم :

implementation
function mul(a: integer):integer;external 'mul.dll';
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
s : integer;
begin
s := mul(5);
end;

end.

اما با خطای
http://jdaneshju.com/up/images/5pnog3emyen7j1b767so.jpg
روبرو میشم !

Felony
پنج شنبه 09 آذر 1391, 18:31 عصر
dll هایی که Net. تولید میکنه Managed هست نه Native ، به اون صورت نمیتونید Call کنیدشون .

http://stackoverflow.com/questions/6174584/call-c-sharp-dll-from-delphi

کتابخانه ها و کامپوننت هایی هم برای این قبیل مبادلات وجود داره ، مثل RemObjects Hydra .