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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 Expert
    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
    Par défaut
    tu as regardé du cote du code managé ?

  3. #3
    Membre averti
    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
    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 averti
    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
    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 Expert
    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
    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)

  6. #6
    Membre averti
    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
    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...

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