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 :

Utilisation de DLL imbriqué


Sujet :

Langage Delphi

  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 422
    Points : 238
    Points
    238
    Par défaut Utilisation de DLL imbriqué
    Hello,

    J'aimerais savoir s'il est possible de réaliser la chose suivante :

    Je développe une DLL qui devrait englober des fonctionnalités provenant d'une autre DLL :

    Nom : dll.jpg
Affichages : 91
Taille : 13,4 Ko

    Le problème est que "l'autre DLL" possède des interfaces.
    - Si j'utilise l'autre DLL directement depuis un exécutable, je peux instancier les interfaces et travailler avec.
    - Dès que je souhaite insérer ma DLL au milieu, je déplace le code qui fonctionne depuis l'exécutable dans ma DLL, et là ça ne fonctionne plus (Access violation).

    Est-ce qu'il est correct d'instancier des interfaces dans ma DLL de cette manière ?

    J'espère que ma question est assez claire

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 92
    Points : 159
    Points
    159
    Par défaut
    ce fonctionnement est tout a fait possible.
    après concernant la violation d’accès, il faudrait connaitre le contexte exact : est ce à l'initialisation, pendant l'appel à une fonction, ...

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Ajoute un CoInitialize() si c'est des interface COM

    Mais normalement ce n'est pas VA mais plutôt un code d'erreur UNINITIALIZED


    Pour ma part, j'ai fait cela en Delphi 5à7 puis en C++Builder 2007\XE3, un programme qui invoque une DLL avec une factory d'inferface (non enregistré, un truc maison)
    la DLL elle meme pouvait déporter ses implémentations dans une autre DLL qui exposait des interfaces
    pour enfin utiliser une DLL plus classique avec une table d'export (fourni par un tiers coder en je ne sais quoi)

    Ce qui fait un EXE et 3 niveau de DLL imbriqué !
    Un programme Delphi le fait dès qu'il accède à la DB, le driver DB c'est souvent un tas de DLL qui en appelent d'autre
    Et Windows est même conçu sur ce principe de DLL qui appel DLL (parfois récursivement )
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 691
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 691
    Points : 13 121
    Points
    13 121
    Par défaut
    Normalement CoInitialize n'est invoqué qu'une fois par thread, je ne pense pas que ce soit ça le problème, ni même que COM soit en cause.
    Je pencherais plutôt pour un accès à Application alors qu'il n'est pas initialisé ou à un autre objet en pensant qu'il sera automatiquement partagé entre exe et dll.

    Un peu de code nous aiderait à y voir plus clair...

  5. #5
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2003
    Messages : 422
    Points : 238
    Points
    238
    Par défaut
    Merci pour vos réponses.

    Ma question était vraiment de savoir si cette imbrication de DLL était possible, puisque c'est le cas je peux continuer mon développement dans cette voie en cherchant à résoudre les erreurs. Je débute dans ce genre de développement alors j'ai certainement pas mal d'essais à faire encore.

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

Discussions similaires

  1. [DLL] utiliser une DLL a partir d' une DLL et un .def
    Par venomelektro dans le forum MFC
    Réponses: 9
    Dernier message: 07/12/2004, 14h01
  2. utilisation de dll avec diverses compilateurs
    Par Thylia dans le forum C++
    Réponses: 30
    Dernier message: 21/10/2004, 16h30
  3. Utilisation de dll
    Par portu dans le forum Windows
    Réponses: 7
    Dernier message: 02/03/2004, 23h09
  4. Utilisation de dll
    Par David E dans le forum MFC
    Réponses: 11
    Dernier message: 04/02/2004, 14h09
  5. [CR] Infos sur l'utilisation de dll
    Par step dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 09/08/2002, 11h35

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