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

Delphi Discussion :

Encore la MIDAS version DLL/Lib


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projets
    Inscrit en
    Août 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 127
    Par défaut Encore la MIDAS version DLL/Lib
    Bonjour,

    J'ai parcouru les posts du forum, et biens d'autres, mais j'ai toujours des difficultés avec la MIDAS.
    Pour le ClientDataSet il faut déployer la midas

    Solution 1 :
    - Livrer la dll midas.dll dans le dossier de l'exe
    - Marche sur certains postes
    - Sur d'autres on est obligé d'utiliser regsvr32 filepath\midas.dll
    - Sur d'autres la commande précédente doit être faite à chaque installation de notre logiciel (plusieurs sorties par an)
    - Enfin sur certains postes la commande ne marchait tout simplement pas.

    Du coup nous avons recherché une autre solution.

    Solution 2 :
    - Ajouter le uses MidasLib au projet principal et aux sous projets, dll, .... utilisant un ClientDataSet
    - Marche très bien en debugage sans utiliser les packages d'execution (aucun bpl)
    - Ne marche pas en debugage en utilisant les packages d'execution (avec bpl)

    A priori le problème se situe lorsque l'on appelle une dll "maison" qui a elle aussi besoin d'un ClientDataSet.
    Après la libération de la Dll on a une violation d'accès avec un message utilisateur "Défaillance irrémédiable"

    Pour info nous utilisons FastMM.

    Auriez-vous un début de piste ?

  2. #2
    Membre confirmé
    Homme Profil pro
    Chef de projets
    Inscrit en
    Août 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 127
    Par défaut
    On a trouvé une solution qui marche pour le moment.

    On a supprimé le uses dans les DLL. A priori un déchargement devait s'effectuer avec la suppression de la DLL.
    Du coup seul le use de l'exe principal suffit pour les projets utilisant des DLL avec ClientDataSet.

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 089
    Par défaut
    Citation Envoyé par joc02 Voir le message
    Pour info nous utilisons FastMM.
    C'est donc un ancien Delphi genre le 7, car vu que FastMM est inclus depuis la version 2007 donc dans les suivantes XE ... tu n'aurais pas fait la précision

    Sur un projet C++Builder 2007 puis XE3, tout le projet était monté sous forme DLL appelant d'autre DLL avec en plus les packages d'exécution
    Un grand nombre utilisant un TSimpleDataSet (TClientDataSet+TDataSetProvider+TSQLQuery)

    Effectivement, si tu as un autre logiciel qui a déjà installé une DLL comme objet COM, tu peux avoir un conflit de version avec ton propre logiciel
    C'est une méthode à bannir car si c'est pour endommager un autre logiciel pour que le tien fonctionne, ce n'est pas une bonne solution

    Je ne travaille plus dans la société, mais je crois que l'inclusion était faite dans un BPL maison qui incluait quelques composants internes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #pragma link "midas.lib"
    // et
    RegisterMidasLib(DllGetClassObject)
    Avec C++Builder, j'ai eu des soucis au déchargement / rechargement de DLL, l'outil CodeGuard paniquait totalement
    Possible que le déboggueur Delphi souffre un peu

    "Défaillance irrémédiable" c'est qu'en Debug SOUS Delphi, ou aussi dans une version compilé en Release (lancé HORS delphi) ?
    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

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

Discussions similaires

  1. [Débutant]Encore un problème de DLL
    Par patanoc dans le forum VC++ .NET
    Réponses: 13
    Dernier message: 13/11/2006, 10h47
  2. Utiliser une .dll .lib de VC sous C::B+mingw
    Par reptils dans le forum Code::Blocks
    Réponses: 11
    Dernier message: 18/10/2006, 08h54
  3. Probleme d'integration ZipArchive version DLL
    Par cedekasme dans le forum MFC
    Réponses: 2
    Dernier message: 23/06/2006, 15h04
  4. DLL .lib et .exp
    Par FamiDoo dans le forum MFC
    Réponses: 7
    Dernier message: 17/06/2006, 23h05
  5. dlls & lib and cie
    Par Merfolk dans le forum C++Builder
    Réponses: 10
    Dernier message: 30/06/2004, 17h59

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