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

VB.NET Discussion :

Import de DLL - appel 2 fois ne fonctionne pas


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 40
    Par défaut Import de DLL - appel 2 fois ne fonctionne pas
    Bonjour,

    J'utilise une DLL que j'ai écrite en C dans mon programme en VB. Pas de problème lorsque j'appelle une 1ère fois une fonction de cette DLL, mais la 2ème fois que j'y fais appel dans mon code, j'ai l'erreur suivante :

    L'exception SEHException n'a pas été gérée.
    Mon import de DLL est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        <DllImport("dieharder.dll", CallingConvention:=CallingConvention.Cdecl, EntryPoint:="dieh0@8")> _
        Private Shared Sub dieh0(ByVal fichierATester As String, ByRef res As Double)
     
        End Sub
    A noter que l'erreur survient dans 2 cas : quand j'appelle la même fonction 2 fois à partir de la DLL et quand j'appelle 2 fonctions différentes de cette même DLL.

    Des idées d'où vient le problème?

    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Regarde dans ta DLL si tu n'a pas une fuite mémoire (Courant en C) ou si un pointer n'est NULL lors du deuxième appel

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 40
    Par défaut
    Non...
    En regardant quelques forums je crois que la solution serait de décharger puis recharger ma DLL, mais je ne sais pas comment la décharger. Des idées?

    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    oui, c'est sur ça devrait fonctionner, mais je pense qu'il y a un soucis tous de même ailleurs.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 141
    Par défaut
    Tu dois la charger dans un AppDomain indépendant, et décharger cet AppDomain complètement (MSDN pour décharger une dll).

    Cependant, dans ton cas, je commencerais par simplement la supprimer de la solution et de la référencer à nouveau.

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 40
    Par défaut
    Merci pour ta réponse, mais je fais ça comment?
    J'ai essayé un File.Delete mais sans effet.

  7. #7
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    SEHException traduit simplement une exception non-gérée, autrement dit une exception C++. Ça peut venir de n'importe quoi et je ne vois pas pourquoi décharger la biblio résoudrait le problème. Plus vraisemblable : es-tu certain de la signature de ta fonction ? Quelle est la signature de la fonction importée ?

    Cela dit, si tu veux décharger une biblio, il suffit de faire un p/invoke de FreeLibrary (de mémoire, à vérifier sur msdn).

  8. #8
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 141
    Par défaut
    Citation Envoyé par douze_12 Voir le message
    Merci pour ta réponse, mais je fais ça comment?
    J'ai essayé un File.Delete mais sans effet.
    Suis mon lien MSDN, tout y est renseigné.
    Cependant, comme le dit DonQuiche, je ne vois pas comment cela pourrait résoudre le problème (mais c'est toujours bon de se renseigner!).

Discussions similaires

  1. [XL-2003] Macro d'import de données selon ref qui ne fonctionne pas
    Par sharox dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 16/01/2015, 09h34
  2. Réponses: 2
    Dernier message: 27/09/2013, 09h40
  3. Réponses: 19
    Dernier message: 23/04/2012, 02h49
  4. Les appels aux fonctions ne fonctionnent pas
    Par MaPommeTao dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 16/08/2011, 22h33
  5. Comment faire fonctionner #import "msxml.dll" ?
    Par julien.sagnard dans le forum C++Builder
    Réponses: 1
    Dernier message: 25/10/2007, 16h13

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