Question

Qu'est-ce qui existe ou dois-je demander s'il existe un équivalent à DllMain lors de la création d'une DLL à l'aide de C ++ / CLI?

Existe-t-il des restrictions sur ce qui ne peut pas être appelé à partir de ce code d'initialisation?

Était-ce utile?

La solution

Dan: En ce qui concerne le verrouillage du chargeur, le retard de chargement du CLR par C ++ / CLI et l’initialisation appropriée pour un binaire en mode mixte, je l’ai posté hier sur le sujet ici .

Plus ou moins, si vous avez un binaire en mode mixte, vous ne devez pas faire exécuter de code managé tant que vous êtes dans DllMain () .

Autres conseils

Depuis .NET 2.0, vous disposez d'un "initialiseur de module". Voir ici pour plus d'informations sur la résolution du problème de verrouillage du chargeur. et également ici

Pour une réponse directe à votre question, cette page cite la norme qui dit: "Il n'y a aucune limite quant au code autorisé dans un initialiseur de module. Les initialiseurs de module sont autorisés à exécuter et à appeler du code géré et du code non géré. "

Si vous utilisez la dll dans un autre projet géré (application ac # par exemple), vous n'avez rien à faire ... Tant que les classes auxquelles vous essayez d'accéder sont ref classes, vous pouvez y accéder depuis n’importe quelle autre application gérée.

L’un des grands avantages des dll .Net est qu’ils évitent le verrouillage du chargeur. L’un des effets secondaires est qu’il n’ya pas de DllMain.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top