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

Dev-C++ Discussion :

créer/exécuter un dll


Sujet :

Dev-C++

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 35
    Par défaut créer/exécuter un dll
    hello, je ne comprends pas pourquoi l'exécution de mon programme me donne systématiquement le message 'la mémoire 0x00000000 ne peut être lue'

    après avoir créé un nouveau projet 'DLL' (appellons le A), je fabrique ma dll en 2 étapes:

    1)-------------dans dll.h:-----------------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #ifndef _DLL_H_
    #define _DLL_H_
     
    #if BUILDING_DLL
    # define DLLIMPORT __declspec (dllexport)
    #else /* Not BUILDING_DLL */
    # define DLLIMPORT __declspec (dllimport)
    #endif /* Not BUILDING_DLL */
     
    DLLIMPORT void HelloWorld();
     
    #endif /* _DLL_H_ */
    2)---------------dans dllmain.cpp:----------------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include "dll.h"
    #include <windows.h>
    #include <iostream.h>
     
    DLLIMPORT void HelloWorld()
    {
              cout<<"bouh";
    }
     
    BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved){   
        return TRUE;
    }
    -------------------------------------------
    ensuite, je compile et copie le fichier .dll dans le répertoire où se trouve un autre projet B qui va faire appel à la dll et dans les paramètres de ce projet, j'indique le lien du .a (créé par le projet A)

    dans le main du projet B, je tape dans le main:

    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
    #include <iostream.h>
    #include <windows.h>
     
    int main(int argc, char *argv[])
    {
     
        HMODULE hDLL = LoadLibrary("Projet1");
        if(!hDLL)
    	cout<<"no DLL";
        typedef void (WINAPI * DLL_Function_HelloWorld) ();
        DLL_Function_HelloWorld pFuncHello = (DLL_Function_HelloWorld)  
                                             GetProcAddress( hDLL, "HelloWorld" );
        pFuncHello( );
        system("PAUSE");	
        return 0;
    }
    je compile, ok, et systématiquement, j'ai l'erreur 0x0000000 à l'exécution (si je met pFuncHello( ); en commentaire, il n'y a plus d'erreur)
    Ou me trompe-je?

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 35
    Par défaut
    je précise que l'accès façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //dll.h
    float __declspec (dllexport) add(float a);
    //maindll.cpp
    float __declspec (dllexport) add(float a)
    {
     	  return 2*a;
    }
    //main.cpp
     
    float __declspec (dllexport) add(float a);
    int main()
    {
        cout<<add(1);
    }
    marche bien. Mais pas la façon LoadLibrary...
    Quelqu'un n'aurait-il pas un projet tout simple intégrant une dll?

  3. #3
    Membre chevronné Avatar de aziz jim
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 455

Discussions similaires

  1. [C] Exécution dynamique DLL
    Par lajub dans le forum Windows
    Réponses: 8
    Dernier message: 26/11/2007, 22h49
  2. Erreur d'exécution: msvcr80d.dll
    Par mister3957 dans le forum MFC
    Réponses: 6
    Dernier message: 25/01/2007, 16h48
  3. Créer, utiliser une dll ressource
    Par trent94 dans le forum Windows
    Réponses: 2
    Dernier message: 07/12/2006, 15h39
  4. Réponses: 10
    Dernier message: 02/11/2005, 11h12
  5. Comment exécuter une DLL ?
    Par chleuh dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2005, 14h27

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