Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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?

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?

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!!!!!!!!!

PM Quote