Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724

    [delphi] creare dll

    qualcuno mi sa dare un link dove spieghi come creare una dll in delphi? grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,482
    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...

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    118
    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.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,482
    Originariamente inviato da cshark
    Se dovessi importare un metodo di nome "metod" dalla libreria lib.dll , perchè questa sintassi mi da errori?
    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.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    118
    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

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,482
    Originariamente inviato da cshark
    Compilando questo sorgente mi viene mostrato questo messaggio di errore:RegisterWaitForInputIdle+0x49
    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...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    118
    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...
    Compilando non si presentano errori, il problema è il link che chiama la dll.
    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.

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,482
    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.
    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.

    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...

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    118
    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?
    No, non credo.

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,482
    Originariamente inviato da cshark
    No, non credo.
    Può essere un problemuccio...

    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...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.