Newsgroup: it.comp.lang.c++
Titolo: Costruire dll in C

Mi sto avvicinando alla programmazione in C.
Utilizzo Visual C++ 1.0. 
Vorrei creare una dll e ho visto che è una delle tipologie di progetto
che si può creare.
Nella documentazione in linea non sono riuscito a trovare nulla sulla
dichiarazione e definizione di una funzione in una dll. Inoltre non
capisco che estensione  deve avere il file da compilare.
Potete aiutarmi ?
nb : la dll deve essere richiamata da un programma in VB
Grazie
                            Cicco                              
 
 
ci...@mail.asianet.it

...

Caro Cicco questo è il tuo giorno fortunato, infatti ho avuto parecchio a
che fare sulle dll anche chiamate da VB. Ecco un esempio con VC++4 e VB4.
Spero che non differisca molto per il VC++1. Come vedi non basta compilare
come dll il listato comprendente le funzioni da richiamare run-time da VB,
bisogna anche scrivere un file di definizione del modulo per indicare a VB
le funzioni da importare. Sia il file Operatori.c che Operatori.def vanno
inseriti nel progetto e poi compilati come dll
Codice VB4
Dichiarazioni
Private Declare Function Sommashort Lib
"C:\windows\system\Operatori\Release\Operatori.dll" (ByVal a As Integer,
ByVal b As Integer) As Integer
Procedure Globali
Private Sub SommaEsterna()
Dim a As Integer
Dim b As Integer
Dim Totale As Integer
a = 10
b = 35
Totale = Sommashort(a, b)
Casella.Text = Totale
End Sub
Procedure Locali
Private Sub Form_Load()
 SommaEsterna
End Sub
Codice VC4
File Funzioni DLL (Operatori.c)
#include<windows.h>
#include<ole2.h>
#define CCONV _stdcall
short CCONV Sommashort(short x, short y)
{
 return x+y;
}
File di Definizione del Modulo (Operatori.def)
LIBRARY Operatori
CODE PRELOAD MOVEABLE DISCARDABLE
DATA PRELOAD MOVEABLE
EXPORTS
 Sommashort @1
Osservazioni
La realizzazione della libreria dll  avviene secondo i seguenti passi:
1. creazione del file Operatori.c in cui risultano definite le funzioni che
costituiscono la libreria. Nella parte iniziale viene specificato che la
convenzione di chiamata deve essere di tipo pascal definendo la costante
CCONV come uguale a _stdcall.
2. creazione del file di intestazione Operatori.def dove vanno specificate
nella direttiva EXPORTS tutte le funzioni della libreria.
3. creazione di un progetto Operatori.mak in cui vanno inclusi entrambi i
file Operatori.c e Operatori.def.
4. realizzazione del build del progetto Operatori.mdp che crea Operatori.dll
La realizzazione di un programma VB4 che utilizza le funzioni della libreria
dll avviene in questo modo:
1. nella sezione dichiarazioni/generali di una form vanno dichiarate le
funzioni dll che si vuole utilizzare indicando eventualmente il percorso
esatto della posizione della libreria dll. Bisogna ricordare che il VB per
default adotta il passaggio degli argomenti per riferimento mentre il VC
adotta per default il passaggio degli argomenti per valore. Quindi
eventualmente se la funzione dll richiede il passaggio per valore bisogna
premettere all’argomento ByVal.
2. nella sezione procedure/generali va scritta la procedura che richiama le
funzioni dll.
3. nella sezione procedure/locali in corrispondenza alla procedura associata
all’evento Load vengono posizionate le chiamate alle funzioni dll.
Stefano
Ciao
Per rispondermi direttamente sostituire kant a russel in
ste...@color.irmrussel.rm.cnr.it