qualcuno mi sa dare un link dove spieghi come creare una dll in delphi? grazie
qualcuno mi sa dare un link dove spieghi come creare una dll in delphi? grazie
La stessa Guida in linea contiene le informazioni necessarie.
In fondo, basta creare un semplice progetto DLL Library, definire le funzioni e aggiungerle nella clausola exports nel file principale di progetto.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Un'altra cosa. Come è possible richiamare una funzione in una Dll in Delphi?
Se dovessi importare un metodo di nome "metod" dalla libreria lib.dll , perchè questa sintassi mi da errori?
Esempio di dicharazione della procedura:
procedure method; external 'lib.dll';
Un'altra cosa, è sempre possibile utilizzare in Delphi funzioni scritte in C++? Credo che la Dll sia universale.
Dovresti riportare gli errori che ottieni e la dichiarazione vera e propria a cui fai riferimento, per essere sicuro di non basare un'analisi su qualcosa che non è quello su cui stai effettivamente lavorando.Originariamente inviato da cshark
Se dovessi importare un metodo di nome "metod" dalla libreria lib.dll , perchè questa sintassi mi da errori?
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Questo è il sorgente.
Come puoi ben notare, l'interfaccia grafica del mio programma esempio è una finestra con un pulsante. Cliccando sul pulsante viene chiamata la procedura MiaLib contenuta nella dll 'lib.dll'.Inoltre il file dll è conenuto all'interno della stessa cartella del progetto, non dovrebbero esserci problemi di referenza al file.
----------------------------------------------------------------------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
procedure MiaLib; external 'lib.dll'; //Dichiaro la procedura 'MiaLib' che è all'interno del file 'lib.dll'
procedure TForm1.Button1Click(Sender: TObject);
begin
MiaLib; //Chiamo la procedura.
end;
end.
----------------------------------------------------------------------------------------
Compilando questo sorgente mi viene mostrato questo messaggio di errore:RegisterWaitForInputIdle+0x49
Compilando il sorgente o eseguendo l'applicazione?Originariamente inviato da cshark
Compilando questo sorgente mi viene mostrato questo messaggio di errore:RegisterWaitForInputIdle+0x49
In ogni caso, occorre verificare che il prototipo della procedura importata rispecchi quello della funzione all'interno della DLL, cioè che il nome corrisponda e che siano tali i parametri che la funzione si aspetta, così come il valore di ritorno, se richiesto.
Qual è il prototipo della funzione nella DLL?
E ancora, bisogna controllare che la convenzione di chiamata sia valida.
Fornisci queste informazioni e possiamo continuare ad indagare...![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Compilando non si presentano errori, il problema è il link che chiama la dll.Originariamente inviato da alka
Compilando il sorgente o eseguendo l'applicazione?
In ogni caso, occorre verificare che il prototipo della procedura importata rispecchi quello della funzione all'interno della DLL, cioè che il nome corrisponda e che siano tali i parametri che la funzione si aspetta, così come il valore di ritorno, se richiesto.
Qual è il prototipo della funzione nella DLL?
E ancora, bisogna controllare che la convenzione di chiamata sia valida.
Fornisci queste informazioni e possiamo continuare ad indagare...![]()
Il nome della procedura corrisponde più o meno, gli errori di chiamata della procedura riguardano qualche carattere maiuscolo invece di un minuscolo.Ma per fortuna il pascal non è case sensitive.![]()
![]()
Il prototipo della funzione è questo:
procedure Mialib;
begin
ShowMessage('La dll funziona!');
end;
//////////////////////////////////////////////////////////////
Anche nel file della dll ho caricato la Unit che contiene il metodo ShowMessage.
Non lo è per quello che riguarda la sintassi del linguaggio Delphi e gli identificatori, ma se non ricordo male il nome della funzione deve corrispondere esattamente a quella esportata.Originariamente inviato da cshark
Il nome della procedura corrisponde più o meno, gli errori di chiamata della procedura riguardano qualche carattere maiuscolo invece di un minuscolo.Ma per fortuna il pascal non è case sensitive.
In secondo luogo, la funzione che hai introdotto nella DLL viene esportata nel file principale del progetto (DPR) della libreria attraverso la clausola exports?
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
No, non credo.Originariamente inviato da alka
In secondo luogo, la funzione che hai introdotto nella DLL viene esportata nel file principale del progetto (DPR) della libreria attraverso la clausola exports?
Può essere un problemuccio...Originariamente inviato da cshark
No, non credo.![]()
Se la funzione non viene esportata, non può essere richiamata dall'esterno.
Aggiungi il nome alla clausola exports.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...