IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques C++ Discussion :

Recupérer un tableau créé par une DLL


Sujet :

Bibliothèques C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 94
    Par défaut Recupérer un tableau créé par une DLL
    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

  2. #2
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    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) :

    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
    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.
    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?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/09/2006, 15h38
  2. [MySQL] Tableau rempli par une BDD
    Par xender dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 17/05/2006, 11h58
  3. Réponses: 1
    Dernier message: 01/11/2005, 02h29
  4. Réponses: 2
    Dernier message: 02/06/2005, 18h12
  5. Traitement d'un char* renvoyé par une DLL en C++
    Par LuluTchab dans le forum Langage
    Réponses: 4
    Dernier message: 22/03/2003, 21h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo