Newsgroup: it.comp.programmare.win32
Titolo: DLL con dev-c

Salve...innanzitutto spero di nn essere OT qui. Il mio quesito è il
seguente...
Sto provando a creare una stupida DLL con dev-cpp e siccome non ho molta
dimestichezza con c++ sto seguendo un piccolo tutorial per VC++.
Brevemente:
1) Creo un nuovo progetto DLL e il compilatore mi fornisce 2 file, 1 con
dllmain e uno (dll.h) con la classe (nn capisco molto bene).
2) Aggiungo due funzioni:
LONG APIENTRY Somma (int num1, int num2) {
    return num1 + num2;
}
LONG APIENTRY Sottrai (int num1, int num2) {
    return num1 - num2;
}
3) Aggiungo un file .DEF con dentro
LIBRARY Prova_DLL
DESCRIPTION "Prova"
EXPORTS
    Somma
    Sottrai
Il progetto l'ho chiamato Prova_DLL.
Compilo con Ctrl-F9 e lui mi restituisce:
Line : Unable to open object
File : <percorsomioprogetto>dlltool
Message : exports.o
sotto un altro rigo con
Line : <vuoto>
File : <percorsomioprogetto>Makefile.win
Message : [Build Error] [prova_dll.dll] Error 1
Dove sbaglio (oltre al fatto che esisto)? Grazie.

Così è molto più chiaro..
Il .DEF viene passato al linker della ms, sicuro che x il dev non bisogna
seguire un'altra strada? magari nemmeno lo vuole xchè la crea lui la tabella
delle esportazioni
antonio


Evvivaaaa, ho risolto mezzo problema... :/
Dovevo semplicemente aggiungere nelle opzioni del progetto un parametro per
il linker in riferimento al def che avevo creato...grazie antonio.
ora pero' ho un
[Build Error] [exports.o] Error 255
nel log trovo: sintassi del comando errata, credo si riferisca agli
eseguibili ai quali si appogia devcpp x compilare (g++.exe, makefile.exe) ma
nn riesco ad interpretarlo.
Riuscirņ a compilarla la signorina....ve lo giuro !!!

 Dove sbaglio (oltre al fatto che esisto)? Grazie.
il DEV ed in generale il gcc non ha bisogno del def per linkare una dll ...
ciao

<cuttone/>
veramente la vuole creare ^_^


Devo supporre quindi che le funzioni si pubblicano da sole? E come?
Cioč...mi capisco meglio...
se volessi usare la DLL in un progetto VB o Altro posso crearla senza
specificare esplicitamente le funzioni che saranno disponibili per gli altri
ambienti...oppure devo farlo ma non con una definizione di modulo? E se si
fa cosě perchč hanno creato le def?
e se volessi avere delle funzioni private, magari calcoli che da soli nn
servono a nulla, come faccio a nasconderle?
in dll.h c'č una classe che mi pare serva proprio a questo ma non riesco a
farla funzionare...
mmmm continuo a provare

 farla funzionare...
non capisco ... io ho sempre compilato ed usato le dll e non mi hanno mai creato 
problemi ... pero' ti posso dire che non le ho mai usate con VB ...
ah cmq ricordati che le dll ad oggetti c++ possono essere usate solo con un 
particolare compilatore, quindi non puoi creare dll ad oggetti e sperare che ti 
funzionino in VB VC o altri compilatori se compilati con il GCC ... (sono 
problemi di RTTI e controlli di eccezione ... )
ciao

 dimestichezza con c++ sto seguendo un piccolo tutorial per VC++.
Guarda su 
www.mingw.org
 (il sito di riferimento per la versione di GCC
di solito abbinata con dev-cpp).
Su quel sito guarda sul link "Documentation", in quella pagina quasi
tutto quel che ti serve per realizzare DLL con mingw (per GCC sotto
Windows).
Poi seguendo il link "Frequently Asked Questions (FAQ)"
ci sono anche le informazioni su come usare DLL
scritte con VC++ da GCC e viceversa
("How can an MSVC program call a MinGW DLL, and vice versa?")
ma di solito per roba "normale" gli stub forniti dal pacchetto
w32api coprono la maggior parte delle esigenze.
In ogni caso con Dev-C++ se usi GCC ti conviene tener d'occhio
www.mingw.org
 per aggiornamenti ed altra roba (tipo MSYS, le
librerie w32api aggiornate, ecc. ecc.).
L. Micheletto