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

C# Discussion :

DllImport et DLL maison


Sujet :

C#

  1. #1
    Membre habitué Avatar de Harooold
    Homme Profil pro
    Ingénieur 3D temps réel
    Inscrit en
    Mars 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 136
    Points : 177
    Points
    177
    Par défaut DllImport et DLL maison
    Bonjour,

    J'ai été ce matin témoin d'un phénomène paranormal.

    En effet, j'ai crée en c++ une petite DLL que l'on va appeller maDLL.dll contenant quelques fonctions utiles dans mon projet en C#. Ces fontctions contenant un bloc asm pour des questions d'optimisation, je suis obligé de passer par une DLL.

    Bref, j'ai donc un projet C# avec un repertoire bin/Release et bin/Debug , j'ai mis dans ces deux répertoires maDLL.dll et je l'nvoque dans le projet avec un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [DllImport("maDLL.dll")]
    public extern static void maFonction(params ...);
    puis j'utilise maFonction comme si de rien n'était.
    Cela marchait impec jusqu'a ce matin o.o J'ai rebidouillé mon projet c# puis l'invocation de la DLL s'est mise à émettre l'exception BadImageFormatException ...

    J'ai repris une ancienne version de mon projet où l'invocation de la DLL marchait mais ça me fait lève toujours cette exception.

    Ca doit donc venir de mon environnement, je ne sais pas :s
    Je suis sous Windows xp pro 64bits SP2

    Des idées d'une cause probable ?
    Reflechir peut s'averer utile, sisi.

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    L'Exception est levée au chargement de la DLL ou à l'appel de la fonction ? dit autrement, le DllMain s'exécute-t-il correctement avant l'appel de la fonction ? l'intitulé de l'exception donnerait à penser que c'est le chargement de la DLL qui plante, mais peut être est-ce une exception remontée depuis une DLL appelée elle-même depuis ta DLL en C.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  3. #3
    Membre habitué Avatar de Harooold
    Homme Profil pro
    Ingénieur 3D temps réel
    Inscrit en
    Mars 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur 3D temps réel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2008
    Messages : 136
    Points : 177
    Points
    177
    Par défaut
    L'exception est levée à l'appel de la fonction/

    C'est une exception de System : BadImageFormatException qui dit que l'image fichier de ma dll n'est pas valide. Je ne sais pas trop décrypter ça.
    Ceci dit, je pense que le chargement de la DLL se fait au premier appel de la fonction et que c'est donc bien le chargement de la DLL qui rale. Je n'ai aucune détection d'exception dans mes fonctions.

    Le fait est que ça marchait quelques heures auparavant, et fait cette exception maintenant sur un même code. Le même code marche sur un autre ordinateur ... Donc ça ne vient ni du code ni de la dll mais de l'environnement.
    J'ai regardé coté firewall et autre bidules pouvant bloquer ça mais je n'ai rien trouvé
    Reflechir peut s'averer utile, sisi.

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Harooold Voir le message
    Le fait est que ça marchait quelques heures auparavant,
    Ce qui me fait dire que l'exception est peut être levée par une DLL chargée par ta DLL elle-même. En termes clairs, la conséquence une modification d'environnement sur ta machine.

    Si tu envoie par exemple un messageBox dans le PROCESS_ATTACH de la DllMain, il s'exécute ?

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

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

Discussions similaires

  1. [Débutant] Déploiement de dll "maison"
    Par zoorgh dans le forum VB.NET
    Réponses: 1
    Dernier message: 14/02/2012, 20h03
  2. DllImport et dll introvable
    Par RTN14 dans le forum C#
    Réponses: 4
    Dernier message: 05/04/2010, 14h18
  3. utilisation de DllImport("user32.dll",
    Par WBO dans le forum VB.NET
    Réponses: 4
    Dernier message: 09/12/2008, 23h52
  4. convertion DllImport("coredll.dll" en vb.net
    Par WBO dans le forum Windows Mobile
    Réponses: 0
    Dernier message: 08/12/2008, 15h22
  5. chargement d'une dll maison située au meme endroit que le *.xls
    Par ppaul127 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/11/2007, 00h09

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