begin process at 2010 02 09 17:32:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Charger une dll...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Charger une dll...

lundi 23 janvier 2006 à 22:57:59 | Charger une dll...

ChrOnOs83

Bonjour à tous,

Cela fait maintenant deux jours que je galère pour pouvoir acceder à une fonction mise dans une dll.
J'ai dabors créé ma dll. Dans mon projet j'ai:
Le fichier CoursDll.cpp:
#include <windows.h>
#include "CoursDll.h"

BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call,LPVOID lpReserved)
{
    switch (ul_reason_for_call)
    {
        case DLL_PROCESS_ATTACH:
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
        break;
    }
    return true;
}

extern "C" void WINAPI Initialize()
{
    // Write here all the code you need to initialize the DLL
}

extern "C" void WINAPI Release()
{
    // Write here all the code you need to free everything ...
}

extern "C" void WINAPI TestFunction()
{
    //MessageBox(0,"DLL","",0);
}

Un fichier CoursDll.h:
#ifndef __API_TESTDLL_H
#define __API_TESTDLL_H
#if defined (__cplusplus)
extern "C" {
#endif
// Main API functions declaration
typedef void (WINAPI *DLL_Function_Initialize) ();
typedef void (WINAPI *DLL_Function_Release) ();
typedef void (WINAPI *DLL_Function_TestFunction) ();
#if defined (__cplusplus)
}
#endif
#endif __API_TESTDLL_H

et un fichier CoursDll.Def:
; TestDLL.def : Declares the module parameters for the application
LIBRARY CoursDLL
DESCRIPTION 'Example of DLL'
EXPORTS
; Explicitly exported initialization routine
Initialize @1
Release @2
TestFunction @3

La compilation se passe sans problème.
Esnuite j'ai créér un second projet pour l'executable contenant:
Le fichier main.cpp:
#include <windows.h>

typedef void (WINAPI *DLL_Function_TestFunction)();
DLL_Function_TestFunction pfn_TestFunction;

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    HMODULE hDLL;
    hDLL = LoadLibrary("CoursDll.dll");
    if (hDLL == NULL){
        MessageBox(0,"Dll Introuvable","Erreur",0);
    }else{
        pfn_TestFunction = (DLL_Function_TestFunction)GetProcAddress(hDLL,"TestFunction");
        pfn_TestFunction();
        FreeLibrary(hDLL);
    }
    return 0;
}

La compilation ce deroule aussi sans problème.
Ensuite je copie la dll dans le dossier Debug du projet de l'executable.
Lorsque je démarre l'application ca me fait a chaque fois "Exception non gérée à 0x00000000 dans FenetreBase.exe:0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x00000000."
J'ai beau chercher je ne trouve pas d'où cela provient...

En ésperant que quelqu'un voit de quoi il sagit, bonne journée/soirée/nuit à tous!
++
ChrOnOs


mardi 24 janvier 2006 à 09:14:37 | Re : Charger une dll...

platon179

Membre Club
Réponse acceptée !
Salut :)

Je sais pas si c'est ca (j'ai pas trop l etemps de vérifier ton code puis je suis sous Linux :p) mais commence par vérifier que  pfn_TestFunction ne soit pas égal a NULL....

Bonne journée @+


mardi 24 janvier 2006 à 09:47:05 | Re : Charger une dll...

ChrOnOs83

Je te remerci platon179! En effet pfn_TestFunction est null... Je commence a me demander si j'aurai, un jour, les bon reflexes...:-)
Ca me donne déjà un chemin à suivre.
Bonne journée!!
++
mardi 24 janvier 2006 à 10:44:24 | Re : Charger une dll...

ChrOnOs83

Réponse acceptée !
Voila mon problème est résolu. J'avai mal déclaré le .def... C'est quand meme dur la vie de noob!:-D
Bref merci à tous ce qui on chercher et particulierement à platon179 et BruNews(pour ces sources)
++
ChrOnOs


Cette discussion est classée dans : function, dll, void, testfunction, winapi


Répondre à ce message

Sujets en rapport avec ce message

Création et utilisation d'une dll explicit cad sans .lib [ par dev2004 ] Bonjour,Je recherche un exemple de création et d'utilisation d'une dll chargée explicitement sous VC++6.0 (LoadLibrary & GetProcAddress) ou la signifi Chargement DLL [ par Chapi72 ] Bonjour,j'essaie juste de charger une DLL dans un pg C++ (en visualC++)Voici mon code:HINSTANCE hDLL = LoadLibrary("SpotCam.dll");typedef int(WINAPI * Pointeur sur fonction envoyé par dll [ par MoDDiB ] Voila ce que j'ai fais mais ca ne marche pas :Dll :#include BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved){ retu [dev-c++] probleme de "multifiles" [ par Isoth0p ] Bonjour. Je me trouve face à petit problème dû, je pense, à la NON-GESTION du "multifiles" par dev-cpp. En effet, mes 2 fichiers .CPP sont correctemen [C++ Buidler 6] Comment exporter une dll ? ;) [ par Fy_Hertz ] Bonjour à tous, J'ai créé une dll contenant deux fonctions exportées avec: __declspec (dllexport) Mainteant, j'essaye de utiliser dans un autre progr DLL sous C++ builder 6 [ par ivdz ] Bonjour,Voici une partie du .h de mon exécutable que je dois transformer en DLL (sous C++ builder 6) :#ifndef MODBUSTCPIP_H#define MODBUSTCPIP_Hclass problème simple sur les DLL [ par phenX ] salut,voila, je suis débutant en création de DLL et je n'y arrive pas.J'utilise DevCPPJ'ai créé un projet PROJET1.DEV, dedans j'ai un fichier "Def.h" problem with "avicap32.dll" [ par pippos77 ] sorry, how do I create a function that is referred to a function of library "avicap32.dll" using VC++ ??? thank you. mar problème de dll pour VBA pour un nul [ par wismerhill__ ] Bonjour à tous, je suis grand débutant en C++ et je m'y met apres VBAJe voudrais faire une dll en c++ car VBA ne va assez vite, le problème c'est que Créer dll en C++ [ par ANDRIAMIADANARIVO ] Pourquoi lorsqu'on compile le fichier .cpp ci-dessous, il y a une erreur qu'il faudra mettre ";" devant "void" et que "cout" n'est pas déclaré.#includ


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales