Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - classi & dll
Forum - C/C++ - classi & dll

Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 16:53
Domenica, 04/01/2009
Buon anno a tutti(anche se un po in ritardo)
sapreste dirmi come posso creare una dll in c++
(usando VC++ 6.0) con delle classi al suo interno?

Conosco il modo per creare dll con le funzioni normali, ma con le classi non sono ancora riuscito a trovare niente(neanche su google).

Qualcuno saprebbe aiutarmi?


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 16:32
Lunedì, 05/01/2009
con dll intendi la libreria?
definisci la classe nell'header file che devi includere nei progetti, insieme alle funzioni che esporti.

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 17:54
Lunedì, 05/01/2009
Cosa vuoi dire con definire la classe nel .h?

Io quando devo esportare una funzione uso
Codice sorgente - presumibilmente Plain Text

  1. __declspec( dllexport )void funzione();


nel file .h interno.

In quello che includo nei progetti metto il normale prototipo.

In pratica ho 3 file per una dll con una funzione normale:

test.cpp -> con il corpo della funzione
test.h -> con il prototipo della funzione(questo file lo includo nei progetti)
internal.h -> con la __declspec

Usando una classe, come dovrei impostare i tre file?


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 15:10
Martedì, 06/01/2009
allora nel file test.h dichiari la classe.
Codice sorgente - presumibilmente C++

  1. #ifndef __MYCLASS__
  2. #define __MYCLASS__
  3.  
  4. class __declspec( dllexport ) myClass
  5. {
  6. public:
  7.         myClass();
  8.         ~myClass();
  9.         int sum(int a,int b);
  10. };
  11.  
  12. #endif


nel file test.cpp implementi i metodi della classe ecc...
Poi crea un file .h sarà quello che includerai nei progetti e scrivi:
finclusion.h
Codice sorgente - presumibilmente C++

  1. class __declspec( dllimport) myClass
  2. {
  3. public:
  4.         myClass();
  5.         ~myClass();
  6.         int va;
  7.         int sum(int a,int b);
  8.         void save(int c);
  9. };


ora in un progetto: main.cpp
Codice sorgente - presumibilmente C++

  1. #include "finclusion.h" //il file dove hai dichiarato la classe
  2.  
  3. #pragma comment(lib,"dlldiprima.dll")
  4.  
  5. int main()
  6. {
  7.         myClass a; //instanzi la classe
  8.         int c = a.sum(1,2); //chiami un metodo della classe
  9.         return 0;
  10. }



PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 16:15
Martedì, 06/01/2009
funziona, grazie!!!!!!!!!


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote