100 votes

Erreur de verrouillage du chargeur

Je suis bâtiment sur dll C++, par l'écriture de code en C#.

J'obtiens une erreur, en disant:

LoaderLock a été détecté Message: La tentative d'exécution géré à l'intérieur de l'OS Verrou du chargeur. N'essayez pas d'exécuter code géré à l'intérieur d'une fonction DllMain ou de l'image fonction d'initialisation depuis le faire peut entraîner l'application de l'accrocher.

J'ai essayé seraching ce que cette erreur signifie exactement, mais je suis de dessin inutile d'articles, pour la plupart disent que c'est juste un avertissement, et que je ne la désactivez, dans Visual Studio. Les autres solutions semblent être due à ITunes, ou ce problème survenant lors de la programmation avec DirectX. Mon problème est lié à aucun des deux.

Quelqu'un peut-il expliquer ce que cela signifie réellement?

73voto

ghiboz Points 2308

vous devez aller au menu Debug -> Exceptions, ouvrir les assistants de débogage managés, trouver LoaderLock et décocher

http://goo.gl/TGAHV

54voto

Hershi Points 1228

L'idée générale de verrou du chargeur: Le système exécute le code dans la fonction DllMain à l'intérieur d'une serrure (comme en - verrou de synchronisation). Par conséquent, l'exécution de non-trivial de code à l'intérieur de la fonction DllMain est "demander une impasse", comme décrit ici.

La question est, pourquoi êtes-vous essayer d'exécuter du code à l'intérieur de la fonction DllMain? Il est essentiel que ce code s'exécutent dans le contexte de la fonction DllMain ou pouvez-vous générer un nouveau thread et exécuter le code, et ne pas attendre que le code pour terminer l'exécution à l'intérieur de la fonction DllMain?

Je crois que le problème avec manged code particulier, est que l'exécution de code managé peut implique le chargement de la CLR et autres choses de ce genre et on ne sait pas ce qui peut arriver qu'entraînerait un blocage... je ne voudrais pas tenir compte de l'avis de "désactiver cet avertissement:" si j'étais vous, parce que la plupart chances sont que vous allez trouver vos applications se bloque de façon inattendue selon certains scénarios.

6voto

Bhaskar Singh Points 81

Appuyez sur ctr d + e Puis développez le nœud Assistants de débogage gérés. Puis décoché le LoaderLock.

J'espère que ceci vous aidera.

2voto

Rakshit Bakshi Points 173

Ce problème se produit en raison de la façon dont le débogueur dans Visual Studio exécute des applications gérées qui utilisent la version 8.0 de Microsoft Foundation Classes dans un ou plusieurs fichiers DLL.

Ayez une lecture approfondie à: http://msdn.microsoft.com/en-us/library/aa290048(vs.71).aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X