Bonjour,
Dans une DLL je crée un tableau et je le complète.
Je souhaite ensuite lire les éléments de ce tableau dans le programme principal.
Comment dois-je opérer ?
A l'avance Merci
Robert
Bonjour,
Dans une DLL je crée un tableau et je le complète.
Je souhaite ensuite lire les éléments de ce tableau dans le programme principal.
Comment dois-je opérer ?
A l'avance Merci
Robert
Ta dll dois exposer au moins une fonction fournissant un accès (pointeur/référence/autre) vers ton tableau. Pour exposer cette fonction (ou cette classe) il y a un mot clé dépendant du compilateur. Cherche "dllinput" et "dllexport" généralement ce sont les macros utilisées pour simplifier l'ecriture.
Le code de la dll doit compiler avec "dllexport" tandis que le code de l'application qui utilisera la dll devra utiliser "dllimport". Du coup généralement on met en place un jonglage de macro qui peut ressembler à ça (du code perso) :
http://code.google.com/p/game-core/s...rossPlatform.h
Tout n'est pas interessant pour toi mais c'est la base pour comprendre après l'utilisation que j'en fais (autre part) :
Dans les headers de ma dll j'utilise GCCORE_SOURCE dans les déclarations de classes et de fonctions qui doivent être exposées par la dll. J'ai aussi défini GCORE_SOURCE dans les paramettres de compilation du projet dll.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #if defined ( GCORE_SOURCE ) ///Import / Export of dynamic lib functions/classes for Windows #define GCORE_API GC_DllExport //symbol export #else ///Import / Export of dynamic lib functions/classes for Windows #define GCORE_API GC_DllImport #endif
De cette manière, lorsque je compile la dll, j'ai bien GC_DllExport qui est utilisé. Ensuite dans les projets qui utilisent la dll, on inclus les headers mais GCORE_API deviens alors GC_DllImport, permettant l'utilisation de ces symboles.
Donc avec ce genre de chose, une fonction fournissant un accès en lecture seule à un vector ressemblerait çà quelque chose comme:
std::vector<Machin>& GCORE_API getMachins();
Ca t'aide?
Partager