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

Langage Delphi Discussion :

Le module spécifié est introuvable


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 23
    Points : 16
    Points
    16
    Par défaut Le module spécifié est introuvable
    J'ai réalisé une application permettant d'explorer le contenu d'un fichier ZIP grâce au composant MoleZIP, et celle-ci est maintenant terminée.
    Je l'avais programmée sur mon bureau, et je l'ai maintenant déplacée et lorsque je la lance, elle me met 'Le module spécifié est introuvable'. Elle a en fait besoin que MoleZip.dll soit sur le bureau...

    Merci d'avance

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    tu peux coder pour que le LoadLibrary cherche dans le répertoire de l'appli, ou sinon, dans le cas d'une importation statique, à toi d'ajuster le chemin qui doit pouvoir être relatif
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Vi c'ets juste une question de Chemin relatif .. et faut eviter de les definir avec des "." un open dialog les modifient ....
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Je me doute bien que c'est une question de chemin relatif, mais où est-ce que je peux modifier ça ??
    J'ai essayé de faire un LoadLibrary, mais ça ne marche pas...

  5. #5
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    La solution bourrine: mettre MoleZip.dll dans c:\Windows\System32... Et là, ça marchera à tous les coups...
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    bah justement non, j'avais déjà essayé...

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Je ne vois pas l'intérêt d'utiliser LoadLibrary : si tu t'en est passé jusqu'ici, c'est que les liaisons sont statiques, et pour t'éviter de tout réecrire il vaut mieux éviter de changer ce mode de liaison.
    La solution est de mettre cette DLL dans le répertoire de l'exécutable, ou dans un répertoire du %PATH% (Dossier Windows, dossier système, etc.)
    "It's more fun to compute !"

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    justement, j'ai déjà essayé...
    Je ne comprend vraiment rien.
    Le seul endroit où ça marche c'est dans le répertoire sur mon bureau, et l'exe peut être n'importe où, tant que la DLL est dans ce répertoire...

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Dans le code source de ton appli, les fonctions liées à la DLL doivent être marquées external.
    La valeur qui suit ce mot clé est elle un chemin absolu ou relatif ?
    "It's more fun to compute !"

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    A aucun endroit de mon appli il n'y a de fonction external. Pour accéder à mon ZIP, j'utilise le composant suivant :

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    unit MoleZip;
     
    // ************************************************************************ //
    // WARNING                                                                    
    // -------                                                                    
    // The types declared in this file were generated from data read from a       
    // Type Library. If this type library is explicitly or indirectly (via        
    // another type library referring to this type library) re-imported, or the   
    // 'Refresh' command of the Type Library Editor activated while editing the   
    // Type Library, the contents of this file will be regenerated and all        
    // manual modifications will be lost.                                         
    // ************************************************************************ //
     
    // PASTLWTR : $Revision: 1.1 $
    // File generated on 10.12.2003 3:06:10 from Type Library described below.
     
    // ************************************************************************  //
    // Type Lib: ../MoleZip.dll (1)
    // LIBID: {89EE177D-97AF-4D9A-9BB8-264DF5A31095}
    // LCID: 0
    // Helpfile: 
    // HelpString: MoleStudio MoleZip
    // DepndLst: 
    //   (1) v2.0 stdole, (E:\WINNT\System32\stdole2.tlb)
    // ************************************************************************ //
    {$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers. 
    {$WARN SYMBOL_PLATFORM OFF}
    {$WRITEABLECONST ON}
    {$VARPROPSETTER ON}
    interface
     
    uses Windows, ActiveX, Classes, Graphics, OleServer, StdVCL, Variants;
     
     
    // *********************************************************************//
    // GUIDS declared in the TypeLibrary. Following prefixes are used:        
    //   Type Libraries     : LIBID_xxxx                                      
    //   CoClasses          : CLASS_xxxx                                      
    //   DISPInterfaces     : DIID_xxxx                                       
    //   Non-DISP interfaces: IID_xxxx                                        
    // *********************************************************************//
    const
      // TypeLibrary Major and minor versions
      MoleZipMajorVersion = 1;
      MoleZipMinorVersion = 0;
     
      LIBID_MoleZip: TGUID = '{89EE177D-97AF-4D9A-9BB8-264DF5A31095}';
     
      IID_IZipFile: TGUID = '{0D9D8386-5B05-49BB-8341-FFC1DA94D587}';
      CLASS_ZipFile: TGUID = '{F64EBFC5-393D-4D81-94DF-788B9D7E886E}';
      IID_IRecordsEnumerator: TGUID = '{F181DB88-2A1C-4B04-88DF-10FD20E3FE22}';
    type
     
    // *********************************************************************//
    // Forward declaration of types defined in TypeLibrary                    
    // *********************************************************************//
      IZipFile = interface;
      IZipFileDisp = dispinterface;
      IRecordsEnumerator = interface;
      IRecordsEnumeratorDisp = dispinterface;
     
    // *********************************************************************//
    // Declaration of CoClasses defined in Type Library                       
    // (NOTE: Here we map each CoClass to its Default Interface)              
    // *********************************************************************//
      ZipFile = IZipFile;
     
     
    // *********************************************************************//
    // Interface: IZipFile
    // Flags:     (4416) Dual OleAutomation Dispatchable
    // GUID:      {0D9D8386-5B05-49BB-8341-FFC1DA94D587}
    // *********************************************************************//
      IZipFile = interface(IDispatch)
        ['{0D9D8386-5B05-49BB-8341-FFC1DA94D587}']
        function Create(const filename: WideString; failIfExists: WordBool): WordBool; safecall;
        function Open(const filename: WideString; createIfNotExists: WordBool): WordBool; safecall;
        function Close: WordBool; safecall;
        procedure Extract(const fname: WideString; const dstFname: WideString); safecall;
        procedure PackInplace(const fname: WideString; const srcName: WideString; level: Integer); safecall;
        function GetCompressedSize(const fname: WideString; out size: Integer): Integer; safecall;
        function GetUncompressedSize(const fname: WideString; out size: Integer): Integer; safecall;
        function Enumerate: IRecordsEnumerator; safecall;
        function get__NewEnum: IUnknown; safecall;
        property _NewEnum: IUnknown read get__NewEnum;
      end;
     
    // *********************************************************************//
    // DispIntf:  IZipFileDisp
    // Flags:     (4416) Dual OleAutomation Dispatchable
    // GUID:      {0D9D8386-5B05-49BB-8341-FFC1DA94D587}
    // *********************************************************************//
      IZipFileDisp = dispinterface
        ['{0D9D8386-5B05-49BB-8341-FFC1DA94D587}']
        function Create(const filename: WideString; failIfExists: WordBool): WordBool; dispid 1;
        function Open(const filename: WideString; createIfNotExists: WordBool): WordBool; dispid 2;
        function Close: WordBool; dispid 3;
        procedure Extract(const fname: WideString; const dstFname: WideString); dispid 4;
        procedure PackInplace(const fname: WideString; const srcName: WideString; level: Integer); dispid 5;
        function GetCompressedSize(const fname: WideString; out size: Integer): Integer; dispid 6;
        function GetUncompressedSize(const fname: WideString; out size: Integer): Integer; dispid 7;
        function Enumerate: IRecordsEnumerator; dispid 8;
        property _NewEnum: IUnknown readonly dispid -4;
      end;
     
    // *********************************************************************//
    // Interface: IRecordsEnumerator
    // Flags:     (4416) Dual OleAutomation Dispatchable
    // GUID:      {F181DB88-2A1C-4B04-88DF-10FD20E3FE22}
    // *********************************************************************//
      IRecordsEnumerator = interface(IDispatch)
        ['{F181DB88-2A1C-4B04-88DF-10FD20E3FE22}']
        function get_value: OleVariant; safecall;
        function Reset: WordBool; safecall;
        function Next: WordBool; safecall;
        property value: OleVariant read get_value;
      end;
     
    // *********************************************************************//
    // DispIntf:  IRecordsEnumeratorDisp
    // Flags:     (4416) Dual OleAutomation Dispatchable
    // GUID:      {F181DB88-2A1C-4B04-88DF-10FD20E3FE22}
    // *********************************************************************//
      IRecordsEnumeratorDisp = dispinterface
        ['{F181DB88-2A1C-4B04-88DF-10FD20E3FE22}']
        property value: OleVariant readonly dispid 1;
        function Reset: WordBool; dispid 2;
        function Next: WordBool; dispid 3;
      end;
     
    // *********************************************************************//
    // The Class CoZipFile provides a Create and CreateRemote method to          
    // create instances of the default interface IZipFile exposed by              
    // the CoClass ZipFile. The functions are intended to be used by             
    // clients wishing to automate the CoClass objects exposed by the         
    // server of this typelibrary.                                            
    // *********************************************************************//
      CoZipFile = class
        class function Create: IZipFile;
        class function CreateRemote(const MachineName: string): IZipFile;
      end;
     
    implementation
     
    uses ComObj;
     
    class function CoZipFile.Create: IZipFile;
    begin
      Result := CreateComObject(CLASS_ZipFile) as IZipFile;
    end;
     
    class function CoZipFile.CreateRemote(const MachineName: string): IZipFile;
    begin
      Result := CreateRemoteComObject(MachineName, CLASS_ZipFile) as IZipFile;
    end;
     
    end.

  11. #11
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Ah, mais c'est un serveur COM in-process...

    Dans ce cas, il faut placer la DLL dans le répertoire que tu veux (par exemple dans le répertoire système) puis exécuter :

    nomdll.dll /regserver

    Le serveur COM sera enregistré dans la base des registres associé au (nouveau) chemin d'accès du fichier. Enfin, tu peux toujours tester ça
    "It's more fun to compute !"

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    quand je fais ça, ça me lance Dependency Walker... Donc je doute qu'il se passe grand chose.
    En plus je ne l'ai pas fait la première fois pour qu'il marche sur mon bureau...

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Désolé. J'ai posté trop vite. Il faut utiliser l'application regsvr32 :

    Pour l'enregistrement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    regsvr32 dllFileName.dll
    Pour le "désenregistrement" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    regsvr32 /u dllFileName.dll
    Quoi qu'il en soit et à mon avis, le problème vient à 99% de là.
    "It's more fun to compute !"

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Effectivement, ça venait de la...
    Alors merci bcp !!


  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 428
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par nikhil Voir le message
    Effectivement, ça venait de la...
    Alors merci bcp !!

    je n'ai pas compris d’Où ça venait,

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

Discussions similaires

  1. [Python 3.X] Pb installation PYGAME : "ImportError: DLL load failed: Le module spécifié est introuvable."
    Par joan-74 dans le forum Déploiement/Installation
    Réponses: 4
    Dernier message: 12/02/2017, 20h58
  2. Réponses: 5
    Dernier message: 31/12/2014, 15h38
  3. le module spécifié est introuvable?
    Par pascb423 dans le forum VB.NET
    Réponses: 0
    Dernier message: 09/12/2014, 19h47
  4. ImportError: DLL load failed: Le module spécifié est introuvable.
    Par Space23 dans le forum Général Python
    Réponses: 4
    Dernier message: 18/02/2013, 08h08
  5. Le module spécifié est introuvable
    Par aluc4rd dans le forum GTK+ avec Python
    Réponses: 3
    Dernier message: 07/06/2005, 19h11

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