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

MFC Discussion :

déclaration d'une dll


Sujet :

MFC

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 11
    Points : 4
    Points
    4
    Par défaut déclaration d'une dll
    salut
    j'ai essaie de déclarer ma dll exdll :
    regsvr32 C:/exdll.dll
    j'ai le message suivant:
    C:/exdll.dll was loaded, but the DllRegisterServer entry point was not found

  2. #2
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Et tu es sûr que ta dll compile bien?

    A-t'elle été compilée sous le même OS que celui où tu essais de l'installer?

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2002
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    est ce que tu n aurais pas besoin d un DllMain class ?

  4. #4
    Candidat au Club
    Inscrit en
    Novembre 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    oui ma dll est compiler sans problem
    j'ai l'utilise dans un programe vb ca marche
    je veut la declare pour l'utiliser dans une page asp

    voila la source de mon main.cpp:
    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
     
    #include <windows.h>
     
    BOOL APIENTRY DllMain( HANDLE hModule, 
                           DWORD  ul_reason_for_call, 
                           LPVOID lpReserved
    					 )
    {
    	return true;
    }
    short __stdcall fct( short a, short  *b )
    	{
    		*b = a + a;
    		return( *b + a );
    	}
    et de exdll.def
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    LIBRARY exdll
     
    EXPORTS
    	fct

  5. #5
    Candidat au Club
    Inscrit en
    Novembre 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    j'ai essaie de déclarer ma dll exdll :
    regsvr32 C:/exdll.dll
    j'ai le message suivant:
    C:/exdll.dll was loaded, but the DllRegisterServer entry point was not found

    qcq peut m'éclairai sur se message : :

  6. #6
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Salut

    puisque tu utilises regsvr32.exe, as-tu créé ta dll comme un objet ATL ?

    Tu dois avoir dans le fichier principal ces quatre fonctions pré-écrites par Visual C: (ma dll ici utilise MFC)
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    /////////////////////////////////////////////////////////////////////////////
    // Used to determine whether the DLL can be unloaded by OLE
     
    STDAPI DllCanUnloadNow(void)
    {
    #ifdef _MERGE_PROXYSTUB
        if (PrxDllCanUnloadNow() != S_OK)
            return S_FALSE;
    #endif
        AFX_MANAGE_STATE(AfxGetStaticModuleState());
        return (AfxDllCanUnloadNow()==S_OK && _Module.GetLockCount()==0) ? S_OK : S_FALSE;
    }
     
    /////////////////////////////////////////////////////////////////////////////
    // Returns a class factory to create an object of the requested type
     
    STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
    {
    #ifdef _MERGE_PROXYSTUB
        if (PrxDllGetClassObject(rclsid, riid, ppv) == S_OK)
            return S_OK;
    #endif
        return _Module.GetClassObject(rclsid, riid, ppv);
    }
     
    /////////////////////////////////////////////////////////////////////////////
    // DllRegisterServer - Adds entries to the system registry
     
    STDAPI DllRegisterServer(void)
    {
    #ifdef _MERGE_PROXYSTUB
        HRESULT hRes = PrxDllRegisterServer();
        if (FAILED(hRes))
            return hRes;
    #endif
        // registers object, typelib and all interfaces in typelib
        return _Module.RegisterServer(TRUE);
    }
     
    /////////////////////////////////////////////////////////////////////////////
    // DllUnregisterServer - Removes entries from the system registry
     
    STDAPI DllUnregisterServer(void)
    {
    #ifdef _MERGE_PROXYSTUB
        PrxDllUnregisterServer();
    #endif
        return _Module.UnregisterServer(TRUE);
    }
    Ton .DEF doit au moins contenir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    EXPORTS
    	DllCanUnloadNow     @1 PRIVATE
    	DllGetClassObject   @2 PRIVATE
    	DllRegisterServer   @3 PRIVATE
    	DllUnregisterServer	@4 PRIVATE
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  7. #7
    Candidat au Club
    Inscrit en
    Novembre 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    je n'est pas c'est 4 fonction
    quand je crée la dll je fai new/win32 dynamic-link library/ A simple DLL project/
    et pour ma fonction je l'ajoute dans le fichier principale
    et je la declare dans le .def
    je vais essai d'intgrer ce que vous avez dit

  8. #8
    Candidat au Club
    Inscrit en
    Novembre 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    est ce qu'il ya des includes avant ces fonctions
    quand je compile j'ai des erreur comme
    'AFX_MANAGE_STATE' : undeclared identifier
    AfxGetStaticModuleState' : undeclared identifier
    ...

    mon but c'est crée une dll qui va géré mes connection a la base de données et la declare dans la base de regster on utilisent regsvr32.exe

    avec VB je le fait sans probleme
    avec VC++ comme je suis débutent c'est pas facile

    je vous remerci infiniment pour votre aide

  9. #9
    Candidat au Club
    Inscrit en
    Novembre 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    l'ai créé la dll comme un objet ATL
    j'ai mis la fonction de l'addition j'ai tester avec un petit programe vb ca marche quand j'ai essai de la declarer dans la base de regestre
    j'ai eu le message suivant :
    Loadlibrary("d:\application\exdll.dll") failed
    le module spécifié est est introuvable


Discussions similaires

  1. Réponses: 2
    Dernier message: 07/05/2008, 15h01
  2. pb de récup de handle à partir d'une dll
    Par yokito dans le forum Langage
    Réponses: 2
    Dernier message: 20/08/2002, 12h29
  3. Utilisation d'une dll écrite en delphi 5 dans VB6
    Par Jean-Louis dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2002, 09h19
  4. Declarer une dll Delphi ?
    Par DelphiCool dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/07/2002, 10h07
  5. Equivalent à ExeName pour une DLL
    Par Smortex dans le forum Langage
    Réponses: 7
    Dernier message: 16/07/2002, 21h07

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