Bonjour,
Cela fait quelques jours que je cherche le moyen d'exporter une classe c++ contenant seulement de la donn�e (chaines de caract�res, entiers...) dans une dll.
Quelques contraintes, parce que sinon, �a serait trop facile :
- La dll doit �tre utilisable par du delphi, du vb, ... donc me dites pas d'importer le .h dans l'appli qui utilise la dll, c'est pas possible.
- L'objet que je veux exporter contient d'autres objets (que je vais devoir exporter aussi)
Ou j'en suis aujourd'hui :
- J'ai vu qu'on pouvait faire du __declspec(dllexport) mais je dois avoir le .h pour utiliser ma classe -> je veux juste une dll
- J'ai essay� avec un .def (cr�� � partir d'infos trouv�es dans le .map) mais j'ai l'impression que les classes n'y sont pas. J'ai le constructeur, le destructeur mais pas la classe en elle m�me. Ou alors je n'ai pas compris comment l'importer apr�s.
- Voil� le code simplifi� :
[DLL]
Ma classe de donn�e
une fonction (que j'exporte �galement) :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #undef AFX_DATA #define AFX_DATA AFX_EXT_DATA #include <string> class Plop { public: Plop(void); ~Plop(void); public: std::string* plopy; }; #undef AFX_DATA #define AFX_DATA
Mon fichier .def :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4 Plop* GiveMePlop() { return new Plop(); }
[APPLI]
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 LIBRARY "PlopAPI" EXPORTS GiveMePlop @1 Plop = ??0Plop@@QAE@XZ @2
ma classe qui utilise la dll :
J'ai l'impression qu'il manque pas grand chose pour que ca marche ou bien que c'est impossible mais dans les deux cas, je veux bien savoir comment faire.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 typedef int (*GiveMePlopFunc)(); /* je voudrais pas du int mais du Plop* */ HINSTANCE hInstLibrary = LoadLibrary(_T("Plop.dll")); if (hInstLibrary) { GiveMePlopFunc plopFunc = (GiveMePlopFunc)GetProcAddress(hInstLibrary,"GiveMePlop"); /* ici je voudrais r�cup�rer mon objet plop : Plop* plop = */ plopFunc(); }
Merci d'avance
Partager