Dll dinamik bağlantı kitaplığında bulunamadı hatası.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
neu84
Üye
Mesajlar: 307
Kayıt: 06 Oca 2011 11:27

Dll dinamik bağlantı kitaplığında bulunamadı hatası.

Mesaj gönderen neu84 »

Selam arkadaşlar,

uygulamamdan çagırmak için dll olluşturdum, f9 a bastıgımda mesaj yordam giriş noktası, project2.dll dinamik bağlantı kitaplığında bulunamadı diye bir hata veriyor. Projeyi aynı dizin içinde oluşturdum, hepsi tek bi klasörün içince ancak böyle bi hata var karşımda.. Öneriniz ne olabilir?

Ana formumda bu şekilde çagırıyorum dll i.

Kod: Tümünü seç

implementation
procedure mesaj(x:string);far;external 'project2.dll';//
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
mesaj('PROGRAMDAN DLL E GİDEN MESAJ');
end;
Dll projemin içeri ise şu

Kod: Tümünü seç

uses
  SysUtils,
  Classes,
  Dialogs;
  procedure Mesaj(x:string);export;
  begin
    ShowMessage('Dll ile gelen mesaj :'+x);
  end;
  Exports
  mesaj;
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: Dll dinamik bağlantı kitaplığında bulunamadı hatası.

Mesaj gönderen G.Arkas »

Eğer bir .dll dosyası windows a ait bir dinamik kütüphane değilde external(harici) bi kütüphane ise bunu "LoadLibrary" komutu ile yüklemen lazım.

dll dosyası örneği

Kod: Tümünü seç

procedure plugin;; stdcall; export;
begin
...
//Kodlar buraya 
...
end;

export plugin
Loader yani ana program

Kod: Tümünü seç

var
Car: Cardinal;
begin
...
  Car := LoadLibrary(Pchar('plugin.dll'));
    GetProcAddress(Car , 'plugin');
//Pointer olarak çağır
...
end;
Resim
neu84
Üye
Mesajlar: 307
Kayıt: 06 Oca 2011 11:27

Re: Dll dinamik bağlantı kitaplığında bulunamadı hatası.

Mesaj gönderen neu84 »

G.Arkas yazdı:Eğer bir .dll dosyası windows a ait bir dinamik kütüphane değilde external(harici) bi kütüphane ise bunu "LoadLibrary" komutu ile yüklemen lazım.

dll dosyası örneği

Kod: Tümünü seç

procedure plugin;; stdcall; export;
begin
...
//Kodlar buraya 
...
end;

export plugin
Loader yani ana program

Kod: Tümünü seç

var
Car: Cardinal;
begin
...
  Car := LoadLibrary(Pchar('plugin.dll'));
    GetProcAddress(Car , 'plugin');
//Pointer olarak çağır
...
end;
Çok tşk ederim kardeş, takılıp kalmıştım orda, deneyince sonucu söylerim.. Bu arada pointer olarak çagırmamızın sebebi nedir acaba? Bu pointer hep kafamı karıştırmıştır, tam mantıgını anlayamamışımdır kaçtane makale okumuş olsamda.. sende kısa anlatırmısın bana ltfn...


Şimdi şu şekilde çagırdım ancak mesaj procedure undan hiç bişey gelmedi görünmedi. Parametreli proc yada functionlardan gelen veriyi nasıl göstercem.
benim proc un içinde bi showmessage vardı o açılmıyor mesela hiç. napmam gerekiyor?

Kod: Tümünü seç

var
msj:cardinal;
begin
msj:=LoadLibrary(Pchar('project2.dll'));
GetProcAddress(msj,'mesaj("selamm")');
//mesaj('PROGRAMDAN DLL E GİDEN MESAJ');
end;
Cevapla