Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

EntryPointNotFoundException, classe

Exception levée lorsqu'une tentative de chargement d'une classe échoue en raison de l'absence de méthode d'entrée.

System.Object
  System.Exception
    System.SystemException
      System.TypeLoadException
        System.EntryPointNotFoundException

Espace de noms :  System
Assembly :  mscorlib (dans mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class EntryPointNotFoundException : TypeLoadException

Le type EntryPointNotFoundException expose les membres suivants.

  NomDescription
Méthode publiquePris en charge par XNA FrameworkEntryPointNotFoundException()Initialise une nouvelle instance de la classe EntryPointNotFoundException.
Méthode publiquePris en charge par XNA FrameworkEntryPointNotFoundException(String)Initialise une nouvelle instance de la classe EntryPointNotFoundException avec un message d'erreur spécifié.
Méthode protégéeEntryPointNotFoundException(SerializationInfo, StreamingContext)Initialise une nouvelle instance de la classe EntryPointNotFoundException avec des données sérialisées.
Méthode publiquePris en charge par XNA FrameworkEntryPointNotFoundException(String, Exception)Initialise une nouvelle instance de la classe EntryPointNotFoundException avec un message d'erreur spécifié et une référence à l'exception interne ayant provoqué cette exception.
Début

  NomDescription
Propriété publiqueDataObtient une collection de paires clé/valeur qui fournissent des informations supplémentaires définies par l'utilisateur sur l'exception. (Hérité de Exception.)
Propriété publiqueHelpLinkObtient ou définit un lien vers le fichier d'aide associé à cette exception. (Hérité de Exception.)
Propriété publiquePris en charge par XNA FrameworkHResultObtient ou définit HRESULT, valeur numérique codée qui est assignée à une exception spécifique. (Hérité de Exception.)
Propriété publiquePris en charge par XNA FrameworkInnerExceptionObtient l'instance Exception qui a provoqué l'exception actuelle. (Hérité de Exception.)
Propriété publiquePris en charge par XNA FrameworkMessageObtient le message d'erreur pour cette exception. (Hérité de TypeLoadException.)

Dans XNA Framework 3.0, ce membre est hérité de Exception.Message.
Propriété publiqueSourceObtient ou définit le nom de l'application ou de l'objet qui est à l'origine de l'erreur. (Hérité de Exception.)
Propriété publiquePris en charge par XNA FrameworkStackTraceObtient une représentation sous forme de chaîne des frames immédiates sur la pile des appels. (Hérité de Exception.)
Propriété publiqueTargetSiteObtient la méthode qui lève l'exception actuelle. (Hérité de Exception.)
Propriété publiqueTypeNameObtient le nom qualifié complet du type qui provoque cette exception. (Hérité de TypeLoadException.)
Début

  NomDescription
Méthode publiquePris en charge par XNA FrameworkEquals(Object)Détermine si l'objet spécifié est identique à l'objet actuel. (Hérité de Object.)
Méthode protégéePris en charge par XNA FrameworkFinalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publiquePris en charge par XNA FrameworkGetBaseExceptionEn cas de substitution dans une classe dérivée, retourne Exception qui est à l'origine d'une ou de plusieurs exceptions suivantes. (Hérité de Exception.)
Méthode publiquePris en charge par XNA FrameworkGetHashCodeSert de fonction de hachage par défaut. (Hérité de Object.)
Méthode publiqueGetObjectDataDéfinit l'objet SerializationInfo avec le nom de la classe, le nom de méthode, l'ID de ressource et les informations d'exception supplémentaires. (Hérité de TypeLoadException.)
Méthode publiquePris en charge par XNA FrameworkGetTypeObtient le type au moment de l'exécution de l'instance actuelle. (Hérité de Exception.)

Dans XNA Framework 3.0, ce membre est hérité de Object.GetType().
Méthode protégéePris en charge par XNA FrameworkMemberwiseCloneCrée une copie superficielle de l'objet Object actuel. (Hérité de Object.)
Méthode publiquePris en charge par XNA FrameworkToStringCrée et retourne une chaîne représentant l'exception en cours. (Hérité de Exception.)
Début

  NomDescription
Événement protégéSerializeObjectStateSe produit lorsqu'une exception est sérialisée pour créer un objet d'état d'exception qui contient des données sérialisées relatives à l'exception. (Hérité de Exception.)
Début

Une exception d'EntryPointNotFoundException est levée lorsque le Common Langage Runtime ne peut pas charger un assembly car il ne peut pas identifier le point d'entrée de l'assembly. Cette exception peut être levée dans les conditions suivantes :

  • Le Common Langage Runtime ne peut pas placer un point d'entrée de l'application (généralement une méthode Main ) dans un assembly exécutable. Le point d'entrée de l'application doit être une méthode globale ou d'static sans paramètre ou un tableau de chaînes en tant que son seul paramètre. Le point d'entrée peut retourner void, ou il peut retourner un code de sortie de Int32 ou de UInt32. Un assembly d'application ne peut pas définir plusieurs points d'entrée.

  • L'appel à une fonction dans une DLL Windows ne peut pas être résolu car la fonction est introuvable. Dans l'exemple suivant, la levée d'une exception EntryPointNotFoundException est levée car User32.dll n'inclut pas une fonction nommée GetMyNumber.

    
    using System;
    using System.Runtime.InteropServices;
    
    public class Example
    {
       [DllImport("user32.dll")]
       public static extern int GetMyNumber();
    
       public static void Main()
       {
          try {
             int number = GetMyNumber();
          }
          catch (EntryPointNotFoundException e) {
             Console.WriteLine("{0}:\n   {1}", e.GetType().Name,  
                               e.Message);
          } 
       }
    }
    // The example displays the following output:
    //    EntryPointNotFoundException:
    //       Unable to find an entry point named 'GetMyNumber' in DLL 'User32.dll'.
    
    
    
  • L'appel à une fonction dans une DLL Windows ne peut pas être résolu car le nom utilisé dans l'appel de méthode ne correspond pas à un nom trouvé dans l'assembly. Souvent, cela se produit parce que le champ d'DllImportAttribute.ExactSpelling implicitement ou explicitement a la valeur true, la méthode appelée inclut un ou plusieurs paramètres de chaîne et a ANSI et une version Unicode, et le nom utilisé dans l'appel de méthode ne correspond pas au nom de cette version ANSI ou Unicode. L'exemple suivant fournit une illustration par la tentative pour appeler la fonction d'MessageBox Windows dans User32.dll. Comme la première définition de méthode spécifie CharSet.Unicode pour le marshaling de chaîne, le langage commun recherche la version à caractère élargi de la fonction, MessageBoxW, au lieu du nom utilisé dans l'appel de méthode, MessageBox. La deuxième définition de méthode corrige ce problème en appelant MessageBoxW au lieu de la fonction d'MessageBox.

    
    using System;
    using System.Runtime.InteropServices;
    
    public class Example
    {
       [DllImport("user32.dll", CharSet = CharSet.Unicode, ExactSpelling = true )]
       public static extern int MessageBox(IntPtr hwnd, String text, String caption, uint type);
    
       [DllImport("user32.dll", CharSet = CharSet.Unicode, ExactSpelling = true )]
       public static extern int MessageBoxW(IntPtr hwnd, String text, String caption, uint type);
    
       public static void Main()
       {
          try {
             MessageBox(new IntPtr(0), "Calling the MessageBox Function", "Example", 0);
          }
          catch (EntryPointNotFoundException e) {
             Console.WriteLine("{0}:\n   {1}", e.GetType().Name,  
                               e.Message);
          }
    
          try {
             MessageBoxW(new IntPtr(0), "Calling the MessageBox Function", "Example", 0);
          }
          catch (EntryPointNotFoundException e) {
             Console.WriteLine("{0}:\n   {1}", e.GetType().Name,  
                               e.Message);
          }
       }
    }
    
    
    
  • Vous tentez d'appeler une fonction dans une bibliothèque de liens dynamiques par son nom simple plutôt que son nom décoré. En général, le compilateur C++ génère un nom décoré pour les fonctions DLL. Par exemple, le code C++ suivant définit une fonction nommée Double à une bibliothèque nommée TestDll.dll.

    
    __declspec(dllexport) int Double(int number)
    {
    	return number * 2;
    }
    
    
    

    Lorsque le code dans les données d'exemple suivant pour appeler la fonction, la levée d'une exception EntryPointNotFoundException est levée car la fonction d'Double est introuvable.

    
    using System;
    using System.Runtime.InteropServices;
    
    public class Example
    {
       [DllImport("TestDll.dll")]
       public static extern int Double(int number);
    
       public static void Main()
       {
          Console.WriteLine(Double(10));
       }
    }
    // The example displays the following output:
    //    Unhandled Exception: System.EntryPointNotFoundException: Unable to find 
    //    an entry point named 'Double' in DLL '.\TestDll.dll'.
    //       at Example.DoubleNum(Int32 number)
    //       at Example.Main()
    
    
    

    Toutefois, si la fonction est appelée en utilisant son nom décoré (dans ce cas, ?Double@@YAHH@Z), l'appel de fonction réussit, comme indiqué dans l'exemple suivant.

    
    using System;
    using System.Runtime.InteropServices;
    
    public class Example
    {
       [DllImport("TestDll.dll", EntryPoint = "?Double@@YAHH@Z")]
       public static extern int Double(int number);
    
       public static void Main()
       {
          Console.WriteLine(Double(10));
       }
    }
    // The example displays the following output:
    //    20
    
    
    

    Vous pouvez rechercher les noms décorés des fonctions exportées par une DLL à l'aide d'un utilitaire tel que Dumpbin.exe.

  • Vous essayez d'appeler une méthode dans un assembly managé comme une bibliothèque de liens dynamiques non managée. Pour ce faire, compilez l'exemple suivant dans un assembly nommé StringUtilities.dll.

    
    using System;
    
    public static class StringUtilities
    {
       public static String SayGoodMorning(String name)
       {
          return String.Format("A top of the morning to you, {0}!", name);
       }
    }
    
    
    

    Vous compilez et exécutez l'exemple suivant, qui essaie d'appeler la méthode StringUtilities.SayGoodMorning dans la bibliothèque de liens dynamiques de StringUtilities.dll manière que le code non managé. Le résultat est une exception d'EntryPointNotFoundException.

    
    using System;
    using System.Runtime.InteropServices;
    
    public class Example
    {
       [DllImport("StringUtilities.dll", CharSet = CharSet.Unicode )]
       public static extern String SayGoodMorning(String name);
    
       public static void Main()
       {
          Console.WriteLine(SayGoodMorning("Dakota"));
       }
    }
    // The example displays the following output:
    //    Unhandled Exception: System.EntryPointNotFoundException: Unable to find an entry point 
    //    named 'GoodMorning' in DLL 'StringUtilities.dll'.
    //       at Example.GoodMorning(String& name)
    //       at Example.Main()
    
    
    

    Pour éliminer l'exception, ajoutez une référence à l'assembly managé et accédez à la méthode StringUtilities.SayGoodMorning comme vous accéderiez toute autre méthode dans du code managé, comme dans l'exemple suivant.

    
    using System;
    
    public class Example
    {
       public static void Main()
       {
           Console.WriteLine(StringUtilities.SayGoodMorning("Dakota"));
       }
    }
    // The example displays the following output:
    //        A top of the morning to you, Dakota!
    
    
    
  • Vous essayez d'appeler une méthode dans une DLL COM comme s'il était une DLL Windows. Pour accéder à une DLL COM, sélectionnez l'option Ajouter une référence dans Visual Studio pour ajouter une référence au projet, puis sélectionnez la bibliothèque de types à partir de l'onglet COM.

Pour obtenir une liste des valeurs initiales des propriétés d'une instance de EntryPointNotFoundException, consultez les constructeurs EntryPointNotFoundException.

.NET Framework

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

.NET pour les applications Windows Phone

Pris en charge dans : Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2014 Microsoft