none
Charger & Décharger des DLLs RRS feed

  • Discussion générale

  • Bonjour à tous,

    dans le cadre de mon travail, on me demande de charger et de décharger des DLLs dynamiquement. J'arrive à charger des DLLs mais je n'arrive pas à les décharger.

    J'ai cru comprendre qu'on pouvait utiliser les AppDomain. J'utilise la fonction Load pour charger mes DLLs dedans, cependant les DLLs ne sont pas trouvées par la suite.

    Je suis par conséquent passé par Kernel32 avec les fonctions LoadLibrary & FreeLibrary. Cependant, après l'exécution de la fonction FreeLibrary j'ai une erreur : System.ExecutionEngineException / {System.Collections.EmptyReadOnlyDictionaryInternal}

    Pouvez m'aider à trouver une solution pour ce problème ?

    Merci d'avance.

    jeudi 10 mars 2011 11:29

Toutes les réponses

  • Bonjour,

     

    Est-ce que vos dll’s sont des assemblys .NET ou des bibliothèques en code natif ? Pour les assemblys .NET vous pouvez utiliser AppDomain et les assemblys seront déchargées quand on ferme l’AppDomain.

     

    Les dlls natifs ne connaissent pas le concept d’AppDomain, donc ces dlls sont visible seulement au niveau du processus entier.

     

    Concernant l’erreur ExecutionEngineException, est-ce que cette erreur se manifeste la première fois que vous appellez FreeLibrary ? Essayez d’appeler FreeLibrary immédiatement après LoadLibrary, sans utiliser aucune de ces fonctions ; peut-être l’erreur est lancée par une ressource mal initialisée.

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, SharePoint, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     


    Suivez MSDN sur Twitter 

    vendredi 11 mars 2011 15:01