Exporter une class depuis une DLL et l'utiliser dans un programme quelconque [Résolu]

Signaler
Messages postés
7
Date d'inscription
dimanche 12 juillet 2009
Statut
Membre
Dernière intervention
12 août 2009
-
Messages postés
7
Date d'inscription
dimanche 12 juillet 2009
Statut
Membre
Dernière intervention
12 août 2009
-
DLL contenant la classe (Maths.dll)



#define DllExport __declspec (dllexport)

class DllExport Test
{
    private: int nombre;
    public: int Carre(int n)
    {
        nombre = n;
        return nombre*2;
    }
}

Programme utilisant la DLL (Essai.cpp)

Dans ce fichier, je voudrais pouvoir par exemple à un moment donné faire :

Test petit_test;

petit_test.Carre(2);

Voilà je voudrais simplement faire ça, bien sur je n'ai pas écris tout le code, je voudrais juste savoir ce quil faut mettre
par rapport aux dllexport, dllimport et tout ça, pour pouvoir compiler et enfin pouvoir utiliser ma classe.

Je vous remercie par avance de votre aide :)

3 réponses

Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Désolé; deuxième essai :


là où tu veux utiliser la classe :
class __declspec(dllimport)
Test
{
private : int nombre;
public : int Carre(int n);
};

en général, pour éviter les problèmes, on définit la classe dans un .h que l'on utilise à la fois dans les projets dll et utilisation;
il faut alors définir une macro pour préciser dans quel cas on est (le compilateur doit savoir s'il fiat exporter ou importer la classe), par exemple :

// class.h

#pragma once

#ifdef DLL_VERSION
#define IOCLASS __declspec(dllimport)
#else
#define IOCLASS __declpsec(dllexport)
#endif

class IOCLASS Test
{
private: int Nombre;
public: int Carre(int n);
};


Pour la dll :

// dll.cpp

#define DLL_VERSION
#include "Class.h"

int Test::Carre(int n){return n*n;}



Pour utiliser dans un projet, simplement :
// source.cpp

#include "Class.h"

Test t;
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
là où tu veux utiliser la classe :

class __declspec(dllimport) Test
{
private : int nombre;
public : int Carre(int n);
};

en général, pour éviter les problèmes, on définit la classe dans un .h que l'on utilise à la fois dans les projets dll et utilisation; il faut alors définir une macro pour préciser dans quel cas on est (le compilateur doit savoir s'il fiat exporter ou importer la classe), par exemple :

// class.h
#pragma once

#ifdef DLL_VERSION
#define IOCLASS __declspec(dllimport)
#else
#define IOCLASS __declpsec(dllexport)
#endif

class IOCLASS Test
{
private: int Nombre;
public: int Carre(int n);
};


Pour la dll :

// dll.cpp

#define DLL_VERSION
#include "Class.h"

int Test::Carre(int n){return n*n;}


Pour utiliser dans un projet, simplement :

// source.cpp

#include "Class.h"

Test t;
Messages postés
7
Date d'inscription
dimanche 12 juillet 2009
Statut
Membre
Dernière intervention
12 août 2009

Ok merci, c'est très pertinent.

Encore merci et à bientôt :)