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

Windows Presentation Foundation Discussion :

Plantage WPF après utilisation d'une dll externe


Sujet :

Windows Presentation Foundation

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2015
    Messages : 20
    Points : 17
    Points
    17
    Par défaut Plantage WPF après utilisation d'une dll externe
    Bonjour,

    Je ne sais pas si je suis sur le bon forum.
    J'ai un problème sur lequel je bloque depuis un bon bout de temps.
    J'ai identifié l'erreur.

    Je travaille avec un dll externe.

    Donc, à partir d'un bouton ma fenetre (WPF) j'appelle mon module Manager qui lui-même appelle une class "MaClass" que j'ai créée.
    L'objet créé de cette class éxécute les fonctions et méthodes de ma dll extérieure (nommée ici "MaDll").

    A la fin de ces opérations, je reviens dans mon module manager et souhaite ouvrir une autre fenetre WPF. Ca plante systématiquement avec ce message d'erreur :
    'La propriété Set 'System.Windows.FrameworkElement.Height' a levé une exception.' numéro de ligne '4' et position de ligne '5'.

    J'ai défini que c'est l'appel de cette dll extérieure qui génère cette erreur puisque je n'ai pas d'erreur si je crée mon objet sans le relier à ma dll.
    De plus, si j'appelle un WindowsForms, ça marche très bien.

    Si quelqu'un peut me donner une piste à explorer, est ce que ça vient de WPF ou bien de cette dll?
    Quelle solution apporter à cela?

    Un grand merci

    HM

    A la suite, voici les exemple de code :

    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
     
    Module Manager
     'INSTALLER UNE BIBLIOTHEQUE
    Sub Bibliotheque()
     
    'code de définition des variables...
     
    'création d'un objet de la class MaClass
           MyP = New MaClass
           MyP.ChargementBibliotheque(_CleRepSource, _CleRepBiblio) ''(_CleRepMaster, _CleRepBiblio)
     
            Dim MyW As New Window1   ''''''ERREUR'''''''
            MyW.ShowDialog() 
     
     
        End Sub
    End module
    ensuite le code dans MaClass qui fait appel à la dll extérieure "MaDllExterne"

    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
     
     
    Imports MaDllExterne
     
    Public Class MaClass
     
        Dim CdeMaster As MaDllExterne.CommandeMaster
     
        Sub New()
            CdeMaster = New MaDllExterne.CommandeMaster
        End Sub
     
        'appel du chargement de la bibliothèque dans la DllExterne
        Sub ChargementBibliotheque(RepMaster As String, RepSource As String)
     
           Call CdeMaster.InstallCommande(RepMaster, RepSource, res, resmessage)
     
        End Sub
     
    End Class

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    tu as regardé du cote du code managé ?
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
    http://ultimatecorp.eu/wpf/

  3. #3
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2015
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Merci ikeas de ton retour.

    Pardon de mon ignorance, qu'est ce que le code managé?
    Celui qui se génère "tout seul" lors du chargement des objets WPF?

  4. #4
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2015
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Après recherche, effectivement le problème vient peut-être du code managé vu que l'erreur est située dans Window1.g.vb
    à la ligne
    System.Windows.Application.LoadComponent(Me, resourceLocater)

    Voici le code :

    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
     
    <Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>  _
    Partial Public Class Window1
        Inherits System.Windows.Window
        Implements System.Windows.Markup.IComponentConnector
     
        Private _contentLoaded As Boolean
     
        '''<summary>
        '''InitializeComponent
        '''</summary>
        <System.Diagnostics.DebuggerNonUserCodeAttribute(),  _
         System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")>  _
        Public Sub InitializeComponent() Implements System.Windows.Markup.IComponentConnector.InitializeComponent
            If _contentLoaded Then
                Return
            End If
            _contentLoaded = true
            Dim resourceLocater As System.Uri = New System.Uri("/BatiPrix_V2;component/window1.xaml", System.UriKind.Relative)
     
            #ExternalSource("..\..\Window1.xaml",1)
            System.Windows.Application.LoadComponent(Me, resourceLocater) 'erreur à cet endroit là
     
            #End ExternalSource
        End Sub

    Mais comment agir sur ce code vu qu'il se génère à chaque nouvelle compilation?
    Tous les conseils et remarques seront les bienvenus!!

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    en fait faut indiquer dans le proprietés de ton projet qu'il utilise du code non managé
    regarde de ce coté (y'a meme des directives dans le langage aussi pour preciser)
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
    http://ultimatecorp.eu/wpf/

  6. #6
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2015
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Je reviens sur cette discussion car je n'ai toujours pas trouvé la solution.
    Malgré recherches et tests, je suis toujours bloquée.

    En faisant mes tests, je me suis aperçue su visual studio que dans mes options de projet,"Compiler", "Unité centrale cible", j'ai des résultats variés selon l'option choisie :

    AnyCPU : la dll plante tout de suite, ma fenêtre WPF s'ouvre seule.
    X86 : la dll fonctionne mais ensuite WPF plante (les fenêtres WPF ouvertes avant d'ouvrir la dll fonctionnent) donc impossible de continuer.
    X64 : idem anyCPU, ma dll plante.

    Mon ordi est en X64.
    Cela joue-t-il un rôle?

    Comme puis-je lancer ma dll en X86 (uniquement apparemment) et ensuite continuer sur des objets WPF (surtout que ces derniers s'ouvrent avec X86 quand il n'y a pas encore la dll, c'est ce que je comprends le moins)?

    Merci si quelqu'un a déjà rencontré ce problème...

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    tu pourrais pas faire un petit projet exemple avec la dll (que tu glissera ici)
    que l'on voit le problème et que je puisse le tester chez moi
    on gagnerait du temps et ça serait plus parlant
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
    http://ultimatecorp.eu/wpf/

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 49
    Points : 85
    Points
    85
    Par défaut
    Elle vient d'ou cette DLL ? de toi ?
    Si tu as les sources essayes de les ouvrir et d’appelé la même fonction mais dans le projet de la dll en question, tu trouveras tout de suite le bug.

  9. #9
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2015
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Déjà un grand merci pour ce temps passé.
    Alors voici mon code avec l'erreur isolée :

    Tout d'abord, un module manager contenant un sub main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Module Manager
     
        Dim CdeMaster As DllHelMar.CommandeMaster
        Dim MaDll As AppelDLL
     
        Sub main()
            MaDll = New AppelDLL
            Dim MaFenetre As New MainWindow
            MaFenetre.ShowDialog()
            MsgBox("c'est passé")
        End Sub
    End Module
    Ensuite la class AppelDLL qui permet de créer un élément CommandeMaster de ma dll DllHelMar

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Class AppelDLL
        Dim CdeMaster As DllHelMar.CommandeMaster
        Sub New()
            CdeMaster = New DllHelMar.CommandeMaster
        End Sub
    End Class
    J'ai mis la dll en pièce jointe. Elle n'est pas de moi...
    Il faut lui changer l'extension de .doc à .dll, j'ai du changer pour pouvoir la charger sur le forum.

    Voilà, j'espère que cela ira.

    En tout cas, un grand merci

    HelMar
    Fichiers attachés Fichiers attachés

  10. #10
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2015
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Ah oui, pour que la dll fonctionne, il faut paramétrer l'Unité Centrale Cible à X86
    (je crois même que le problème vient sans doute de là...

Discussions similaires

  1. [Lazarus] Utilisation d'une DLL externe = crash !
    Par [ZiP] dans le forum Lazarus
    Réponses: 17
    Dernier message: 24/02/2013, 12h31
  2. [WD12] Utilisation d'une dll externe
    Par rems033 dans le forum WinDev
    Réponses: 4
    Dernier message: 10/12/2009, 14h07
  3. BCB 6 / Violation d'accès après utilisation d'une DLL
    Par a_lincoln54 dans le forum C++Builder
    Réponses: 1
    Dernier message: 28/04/2008, 14h15
  4. Probleme d'utilisation d'une DLL externe
    Par Pasiphae dans le forum C++/CLI
    Réponses: 2
    Dernier message: 19/02/2007, 15h17
  5. dll ActiveX utilisant une DLL externe
    Par Metal3d dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/11/2005, 18h02

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