Comment faire pour charger et décharger, dynamiquement une DLL native de fichier?
J'ai un buggy tiers des fichiers DLL qui, après quelques temps d'exécution, commence à jeter les exceptions de violation d'accès. Quand cela arrive, je veux recharger que fichier DLL. Comment dois-je faire?
Comment à propos du chargement de la dll dans un processus de proxy et de mettre fin à tout le processus? Généralement, un processus est considéré comme rompu après des violations d'accès.
Comment faire? J'ai très peu entendu parler de domaines d'application. Pouvez-vous s'il vous plaît poster un exemple?
Puisque c'est une dll native domaines d'application ne vous aide pas. Vous avez besoin d'avoir un deuxième processus de chargement de la dll, puis utilise une forme d'inter processus communication pour transférer des appels entre les processus. .net remoting peut être un moyen. Mais je n'ai pas fait moi-même.
S'attendant à un nettoyage de décharger et de recharger à partir d'une dll qui a déjà endommagé la mémoire, si bien qu'il jette violation d'accès n'est pas quelque chose que j'aime. La dll perdu la trace de ce qui de son les pointeurs sont toujours valables. Comment faut-il libérer sa mémoire proprement sur décharger?
Violation d'accès erreurs sont fatales dans la nature. Je doute que vous pouvez les attraper à l'aide de try catch gestionnaires et ensuite prendre certaines mesures correctives.
Comment faire? J'ai très peu entendu parler de domaines d'application. Pouvez-vous s'il vous plaît poster un exemple?
Puisque c'est une dll native domaines d'application ne vous aide pas. Vous avez besoin d'avoir un deuxième processus de chargement de la dll, puis utilise une forme d'inter processus communication pour transférer des appels entre les processus. .net remoting peut être un moyen. Mais je n'ai pas fait moi-même.
S'attendant à un nettoyage de décharger et de recharger à partir d'une dll qui a déjà endommagé la mémoire, si bien qu'il jette violation d'accès n'est pas quelque chose que j'aime. La dll perdu la trace de ce qui de son les pointeurs sont toujours valables. Comment faut-il libérer sa mémoire proprement sur décharger?
Violation d'accès erreurs sont fatales dans la nature. Je doute que vous pouvez les attraper à l'aide de try catch gestionnaires et ensuite prendre certaines mesures correctives.
OriginalL'auteur Poma | 2011-06-23
Vous devez vous connecter pour publier un commentaire.
Essayer cette
Si vous voulez appeler des fonctions, vous devez d'abord créer délégué qui correspond à cette fonction et ensuite utiliser WinApi
GetProcAddress
DllImport
cette approche ne fonctionne pasAvez-vous résoudre ce problème? pouvez-vous fournir des code de snippe du code natif? comment le code natif être déclarés et comment le délégué de look? Merci
Avez-vous ce travail ? Pouvez-vous svp me dire comment obtenir le GetDelegateForFunctionPointer de travail ?
L'exemple ci-dessus fonctionne parfaitement
OriginalL'auteur Stecya
Créer un processus de travail qui communique via COM ou un autre mécanisme IPC. Puis, quand la DLL meurt, vous pouvez vous suffit de redémarrer le processus de travail.
OriginalL'auteur Ben
Charger la dll, de l'appeler, puis de décharger jusqu'à ce qu'il s'en est allé.
J'ai adapté le code suivant à partir de la VB.Net exemple ici.
OriginalL'auteur aboy021