PDA

Visualizza la versione completa : [C++] Creare una DLL con Dev-C++ e utilizzarla


Dimischiavone
10-01-2007, 21:54
salve a tutti mi stavo dilettando un pò sulle dll ma non ho trovato molto in giro per la rete!
Allora io uso dev c++ come ambiente di sviluppo faccio un nuovo proggetto e metto dll,ora lui mi crea 2 file uno dllmain.cpp

/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

DLLIMPORT void HelloWorld ()
{
MessageBox (0, "Hello World from DLL!\n", "Hi", MB_ICONINFORMATION);
}


BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ ,
DWORD reason /* Reason this function is being called. */ ,
LPVOID reserved /* Not used. */ )
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;

case DLL_PROCESS_DETACH:
break;

case DLL_THREAD_ATTACH:
break;

case DLL_THREAD_DETACH:
break;
}

/* Returns TRUE on success, FALSE on failure */
return TRUE;
}


ed un altro dll.h


#ifndef _DLL_H_
#define _DLL_H_

#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */


DLLIMPORT void HelloWorld (void);


#endif /* _DLL_H_ */


ora io mi stavo chiedendo dove devo scrivere le mie funzioni e che funzione usare per esportarle infine mi servirebbe sapere anche come poi usare le mie dll in altre applicazioni!

oregon
10-01-2007, 22:34
Questa funzione

DLLIMPORT void HelloWorld ()
{
MessageBox (0, "Hello World from DLL!\n", "Hi", MB_ICONINFORMATION);
}

viene inclusa come esempio di funzione esportata.

In maniera simile puoi scrivere le tue.

Dimischiavone
10-01-2007, 22:37
ciao grazie,ho compialto il proggetto e mi crea la dll ed alcuni file ora se io volessi usare la funzione Helloworld in un mio eseguibile come faccio?

Dimischiavone
11-01-2007, 18:53
up,comunque mi servirebbe poter creare un applicazione che suddivida le funzioni nelle dll specifiche che poi posso richiamare quando mi servono e scaricarle quando non mi servono più!

pgnvni
12-01-2007, 20:57
Per utilizzare la DLL basta che crei un progetto C++ e linki la libreria statica(.A generata automaticamente durante la compilazione della DLL insieme l'header)... Quindi devi andare su Opzione progetto e devi individuare il linker, tra i parametri clicchi su sfoglia e selezioni la libreria statica da usare(che in genere inizia con "lib"NomeLibreria.a)...

Successivamente nel programma devi includere anche l'header della DLL e poi puoi cominciare ad usare nel tuo programma tutte le funzioni che vuoi :D

Spero sono stato chiaro :ciauz:

Dimischiavone
17-01-2007, 00:59
ciao grazie per il chiarimento,solo un'altra cosa e se io volessi collegare la librerie dinamicamente coem posso fare?
esempio: ho degli if che mi dicono in base a delle istruzioni devono chiamare delle funzioni presenti in una librerie io come posso richiamare la dll usarl ae scaricarla al termine dell'utilizzo??
quasi dimenticavo avendo una dll di un altro programma è possibile utilizzarla?

oregon
17-01-2007, 02:59
Devi usare le API LoadLibrary e GetProcessAddress ... trovi tutto su MSDN.

Loading