Ciao a tutti ,
ho bisogno di creare una dll (NON MFC)in c++ che esporti delle funzioni di una classe.
Se possibile vorrei evitare l'utilizzo del file .DEF
Sulla rete la documentazione è un pò confusa, sapete aiutarmi?
Ciao a tutti ,
ho bisogno di creare una dll (NON MFC)in c++ che esporti delle funzioni di una classe.
Se possibile vorrei evitare l'utilizzo del file .DEF
Sulla rete la documentazione è un pò confusa, sapete aiutarmi?
Vuoi sbattezzarti? Guarda QUI
Vai con l'up!
Vuoi sbattezzarti? Guarda QUI
se usi il compilatore vc6 o NET crea un progetto per una dll NON MFC
nelle opzioni del compilatore di default avrai che compilando il progetto ti creerà per esmpio tua.dll e tua.lib se usi.
Usando queste opzioni devi portare nella dir dell'exe la dll e la lib che hai creato.
avrai anche tua.cpp e tua.h
Se hai fatto questa scelta sopra, nel progetto devi mettere anche un file che si chiama per esmpio tua.def lo crei con il notepad e lometti nel progetto. Nel file.def ci devi scrivere questo:
LIBRARY tua
EXPORTS
perchè stai usando una dll dinamca e la sua lib quindi in questo caso la dll deve sapere le funzioni che esporterai.
se nelle opzioni del compilatore scegli l'opzione Static Library allora non ti serve + avere il file.def perchè il tutto è compreso nell'unico file che ti verrà creato che si chiama tua.lib infatti avrà dimensioni maggiori.
Dunque se opti per la dll + la lib nel file.def (che sarebbe tua.def che hai creato) devi mettere la funzione da esportare.
esempio:
LIBRARY tua
EXPORTS
Inizializzazione
ora nel file tua.h immetti la funzione da esportare che è:
extern "C" void __declspec (dllexport) Inizializzazione();
magari ti fai ritornare un tru o false con questa:
extern "C" bool __declspec (dllexport) RitornaFlag();
Nel file .cpp ci metti le funzioni così:
Inizializzazione()
{
...fai l'inizializzazione
}
bool RitornaFlag()
{
return false;
}
Nel progetto dell'exe che richiama la dll e la lib oppure (come sopra) solo la lib perchè hai scelto la Static Library, in un file.h globale o nel cpp pricipale (il main) metti le stesse righe delle funzioni da esportare ovvero i prototipi.
esempio ci incolli le stesse righe così:
extern "C" void __declspec (dllexport) Inizializzazione();
extern "C" bool __declspec (dllexport) RitornaFlag();
Nel progetto che richiama la dll + la lib o solo la lib, nelle opzioni del compilatore devi includere tua.lib (se non funziona nulla)
e come detto prima tua.lib e tua.dell o solo tua.lib deve stare nella dir del progetto dell'exe.
dal mai del progetto per richiamare la funzione basta che metti la sua chiamata:
esempio:
Inizializzazione();
oppure
if(RitornaFlag())//valore del flag di stato
a=2;
else
a=3:
-------------------------
ora che lo rileggo mi sembra quasi un tut?
ciao