EntryPointNotFoundException EntryPointNotFoundException EntryPointNotFoundException EntryPointNotFoundException Class

Definition

Die Ausnahme, die ausgelöst wird, wenn der Versuch zum Laden einer Klasse aufgrund einer fehlender Entrymethode fehlschlägt.The exception that is thrown when an attempt to load a class fails due to the absence of an entry method.

public ref class EntryPointNotFoundException : TypeLoadException
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class EntryPointNotFoundException : TypeLoadException
type EntryPointNotFoundException = class
    inherit TypeLoadException
Public Class EntryPointNotFoundException
Inherits TypeLoadException
Vererbung
Attribute

Hinweise

Eine EntryPointNotFoundException -Ausnahme wird ausgelöst, wenn das Common Language Runtime eine Assembly nicht laden kann, da der Einstiegspunkt der Assembly nicht identifiziert werden kann.An EntryPointNotFoundException exception is thrown when the common language runtime is unable to load an assembly because it cannot identify the assembly's entry point. Diese Ausnahme kann unter den folgenden Bedingungen ausgelöst werden:This exception can be thrown under the following conditions:

  • Der Common Language Runtime kann einen Anwendungs Einstiegspunkt (in der Regel eine Main Methode) in einer ausführbaren Assembly nicht finden.The common language runtime is unable to locate an application entry point (typically a Main method) in an executable assembly. Der Anwendungs Einstiegspunkt muss eine globale-oder static -Methode sein, die entweder keine Parameter oder ein Zeichen folgen Array als einzigen Parameter hat.The application entry point must be a global or static method that has either no parameters or a string array as its only parameter. Der Einstiegspunkt kann zurück voidgeben oder UInt32 einen Int32 Exitcode zurückgeben.The entry point can return void, or it can return an Int32 or UInt32 exit code. Eine Anwendungsassembly kann nicht mehr als einen Einstiegspunkt definieren.An application assembly cannot define more than one entry point.

  • Der aufzurufende Funktion in einer Windows-DLL kann nicht aufgelöst werden, da die Funktion nicht gefunden werden kann.The call to a function in a Windows DLL cannot be resolved because the function cannot be found. Im folgenden Beispiel wird eine EntryPointNotFoundException Ausnahme ausgelöst, da user32. dll keine Funktion mit dem Namen GetMyNumberenthält.In the following example, an EntryPointNotFoundException exception is thrown because User32.dll does not include a function named 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'.
    
    Module Example
        Declare Auto Function GetMyNumber Lib "User32.dll" () As Integer
    
       Public Sub Main()
          Try
             Dim number As Integer = GetMyNumber()
          Catch e As EntryPointNotFoundException
             Console.WriteLine("{0}:{2}   {1}", e.GetType().Name,  
                               e.Message, vbCrLf)
          End Try   
       End Sub
    End Module
    ' The example displays the following output:
    '    EntryPointNotFoundException:
    '       Unable to find an entry point named 'GetMyNumber' in DLL 'User32.dll'.
    
  • Der Aufrufe einer Funktion in einer Windows-DLL kann nicht aufgelöst werden, da der im Methoden Befehl verwendete Name nicht mit einem in der Assembly gefundenen Namen identisch ist.The call to a function in a Windows DLL cannot be resolved because the name used in the method call does not match a name found in the assembly. Dies tritt häufig auf, weil DllImportAttribute.ExactSpelling das Feld entweder implizit oder explizit auf truefestgelegt ist, die aufgerufene Methode mindestens einen Zeichen folgen Parameter enthält und sowohl eine ANSI-als auch eine Unicode-Version aufweist und der im Methodenaufruf verwendete Name nicht entspricht dem Namen dieser ANSI-oder Unicode-Version.Frequently, this occurs because the DllImportAttribute.ExactSpelling field is either implicitly or explicitly set to true, the called method includes one or more string parameters and has both an ANSI and a Unicode version, and the name used in the method call does not correspond to the name of this ANSI or Unicode version. Das folgende Beispiel zeigt eine Abbildung, indem versucht wird, die MessageBox Windows-Funktion in User32. dll aufzurufen.The following example provides an illustration by attempting to call the Windows MessageBox function in User32.dll. Da die erste Methoden Definition für CharSet.Unicode das Marshalling von Zeichen folgen angibt, sucht die Common Language-Sprache nach der breit Zeichen Version der MessageBoxWFunktion, anstelle des MessageBoxim Methoden Aufrufes verwendeten namens.Because the first method definition specifies CharSet.Unicode for string marshaling, the common language looks for the wide-character version of the function, MessageBoxW, instead of the name used in the method call, MessageBox. Die zweite Methoden Definition korrigiert dieses Problem, indem MessageBoxW anstelle MessageBox der-Funktion aufgerufen wird.The second method definition corrects this problem by calling the MessageBoxW instead of the MessageBox function.

    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);
          }
       }
    }
    
    Module Example
       Declare Unicode Function MessageBox Lib "User32.dll" Alias "MessageBox" (
          ByVal hWnd As IntPtr, ByVal txt As String, ByVal caption As String, 
          ByVal typ As UInteger) As Integer  
    
       Declare Unicode Function MessageBox2 Lib "User32.dll" Alias "MessageBoxW" (  
          ByVal hWnd As IntPtr, ByVal txt As String, ByVal caption As String, 
          ByVal typ As UInteger) As Integer  
          
       Public Sub Main()
          Try
             MessageBox(IntPtr.Zero, "Calling the MessageBox Function", "Example", 0 )
          Catch e As EntryPointNotFoundException
             Console.WriteLine("{0}:{2}   {1}", e.GetType().Name,  
                               e.Message, vbCrLf)
          End Try
    
          Try
             MessageBox2(IntPtr.Zero, "Calling the MessageBox Function", "Example", 0 )
          Catch e As EntryPointNotFoundException
             Console.WriteLine("{0}:{2}   {1}", e.GetType().Name,  
                               e.Message, vbCrLf)
          End Try
    
       End Sub
    End Module
    
  • Sie versuchen, eine Funktion in einer Dynamic Link Library anstelle Ihres ergänzten Namens mit dem einfachen Namen aufzurufen.You are trying to call a function in a dynamic link library by its simple name rather than its decorated name. In der Regel C++ generiert der Compiler einen ergänzten Namen für DLL-Funktionen.Typically, the C++ compiler generates a decorated name for DLL functions. Der folgende C++ Code definiert z. b. eine Funktion Double mit dem Namen in einer Bibliothek mit dem Namen "Testdll. dll".For example, the following C++ code defines a function named Double in a library named TestDll.dll.

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

    Wenn der Code im folgenden Beispiel versucht, die Funktion aufzurufen, wird EntryPointNotFoundException eine Ausnahme ausgelöst, da Double die Funktion nicht gefunden werden kann.When the code in the following example tries to call the function, an EntryPointNotFoundException exception is thrown because the Double function cannot be found.

    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.Double(Int32 number)
    //       at Example.Main()
    
    Module Example
       Public Declare Function DoubleNum Lib ".\TestDll.dll" Alias "Double" _
                      (ByVal number As Integer) As Integer
       
       Public Sub Main()
          Console.WriteLine(DoubleNum(10))
       End Sub
    End Module
    ' The example displays the following output:
    '    Unhandled Exception: System.EntryPointNotFoundException: Unable to find an 
    '    entry point named 'Double' in DLL '.\TestDll.dll'.
    '       at Example.Double(Int32 number)
    '       at Example.Main()
    

    Wenn die Funktion jedoch mit dem ergänzten Namen aufgerufen wird (in diesem Fall ?Double@@YAHH@Z), wird der Funktionsaufruf erfolgreich ausgeführt, wie im folgenden Beispiel gezeigt.However, if the function is called by using its decorated name (in this case, ?Double@@YAHH@Z), the function call succeeds, as the following example shows.

    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
    
    Module Example
       Public Declare Function DoubleNum Lib ".\TestDll.dll" Alias "?Double@@YAHH@Z" _
                      (ByVal number As Integer) As Integer
       
       Public Sub Main()
          Console.WriteLine(DoubleNum(10))
       End Sub
    End Module
    ' The example displays the following output:
    '    20 
    

    Die ergänzten Namen von Funktionen, die durch eine DLL exportiert werden, können Sie mithilfe eines Hilfsprogramms wie "dumpbin. exe" suchen.You can find the decorated names of functions exported by a DLL by using a utility such as Dumpbin.exe.

  • Sie versuchen, eine Methode in einer verwalteten Assembly aufzurufen, als ob es sich um eine nicht verwaltete Dynamic Link Library handelt.You are attempting to call a method in a managed assembly as if it were an unmanaged dynamic link library. Um dies in Aktion zu sehen, kompilieren Sie das folgende Beispiel in eine Assembly namens StringUtilities. dll.To see this in action, compile the following example to an assembly named 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);
       }
    }
    
    Module StringUtilities
       Public Function SayGoodMorning(name As String) As String
          Return String.Format("A top of the morning to you, {0}!", name)
       End Function
    End Module
    

    Anschließend können Sie das folgende Beispiel kompilieren und ausführen, das versucht, StringUtilities.SayGoodMorning die-Methode in der StringUtilities. dll-Dynamic Link Library so aufzurufen, als wäre es nicht verwalteter Code.Then compile and execute the following example, which attempts to call the StringUtilities.SayGoodMorning method in the StringUtilities.dll dynamic link library as if it were unmanaged code. Das Ergebnis ist eine EntryPointNotFoundException Ausnahme.The result is an EntryPointNotFoundException exception.

    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()
    
    Module Example
       Declare Unicode Function GoodMorning Lib "StringUtilities.dll" (
          ByVal name As String) As String  
    
       Public Sub Main()
          Console.WriteLine(SayGoodMorning("Dakota"))
       End Sub
    End Module
    ' 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()
    

    Fügen Sie einen Verweis auf die verwaltete Assembly hinzu, und greifen StringUtilities.SayGoodMorning Sie wie im folgenden Beispiel auf eine beliebige andere Methode in verwaltetem Code zu, um die Ausnahme auszuschließen.To eliminate the exception, add a reference to the managed assembly and access the StringUtilities.SayGoodMorning method just as you would access any other method in managed code, as the following example does.

    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!
    
    Module Example
       Public Sub Main()
          Console.WriteLine(StringUtilities.SayGoodMorning("Dakota"))
       End Sub
    End Module
    ' The example displays the following output:
    '       A top of the morning to you, Dakota!
    
  • Sie versuchen, eine Methode in einer com-dll aufzurufen, als ob es sich um eine Windows-DLL handelt.You are trying to call a method in a COM DLL as if it were a Windows DLL. Wenn Sie auf eine com-dll zugreifen möchten, wählen Sie in Visual Studio die Option Verweis hinzufügen aus, um dem Projekt einen Verweis hinzuzufügen, und wählen Sie dann die Typbibliothek auf der Registerkarte com aus.To access a COM DLL, select the Add Reference option in Visual Studio to add a reference to the project, and then select the type library from the COM tab.

Eine Liste der anfänglichen Eigenschaftswerte für eine Instanz von EntryPointNotFoundException, finden Sie unter den EntryPointNotFoundException Konstruktoren.For a list of initial property values for an instance of EntryPointNotFoundException, see the EntryPointNotFoundException constructors.

Konstruktoren

EntryPointNotFoundException() EntryPointNotFoundException() EntryPointNotFoundException() EntryPointNotFoundException()

Initialisiert eine neue Instanz der EntryPointNotFoundException-Klasse.Initializes a new instance of the EntryPointNotFoundException class.

EntryPointNotFoundException(SerializationInfo, StreamingContext) EntryPointNotFoundException(SerializationInfo, StreamingContext) EntryPointNotFoundException(SerializationInfo, StreamingContext) EntryPointNotFoundException(SerializationInfo, StreamingContext)

Initialisiert eine neue Instanz der EntryPointNotFoundException-Klasse mit serialisierten Daten.Initializes a new instance of the EntryPointNotFoundException class with serialized data.

EntryPointNotFoundException(String) EntryPointNotFoundException(String) EntryPointNotFoundException(String) EntryPointNotFoundException(String)

Initialisiert eine neue Instanz der EntryPointNotFoundException-Klasse mit einer angegebenen Fehlermeldung.Initializes a new instance of the EntryPointNotFoundException class with a specified error message.

EntryPointNotFoundException(String, Exception) EntryPointNotFoundException(String, Exception) EntryPointNotFoundException(String, Exception) EntryPointNotFoundException(String, Exception)

Initialisiert eine neue Instanz der EntryPointNotFoundException-Klasse mit einer angegebenen Fehlermeldung und einem Verweis auf die innere Ausnahme, die diese Ausnahme ausgelöst hat.Initializes a new instance of the EntryPointNotFoundException class with a specified error message and a reference to the inner exception that is the cause of this exception.

Eigenschaften

Data Data Data Data

Ruft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen über die Ausnahme bereitstellen.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Inherited from Exception)
HelpLink HelpLink HelpLink HelpLink

Ruft einen Link zur Hilfedatei ab, die dieser Ausnahme zugeordnet ist, oder legt einen Link fest.Gets or sets a link to the help file associated with this exception.

(Inherited from Exception)
HResult HResult HResult HResult

Ruft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Inherited from Exception)
InnerException InnerException InnerException InnerException

Ruft die Exception-Instanz ab, die die aktuelle Ausnahme verursacht hat.Gets the Exception instance that caused the current exception.

(Inherited from Exception)
Message Message Message Message

Ruft die Fehlermeldung für diese Ausnahme ab.Gets the error message for this exception.

(Inherited from TypeLoadException)
Source Source Source Source

Gibt den Namen der Anwendung oder des Objekts zurück, die bzw. das den Fehler verursacht hat, oder legt diesen fest.Gets or sets the name of the application or the object that causes the error.

(Inherited from Exception)
StackTrace StackTrace StackTrace StackTrace

Ruft eine Zeichenfolgendarstellung der unmittelbaren Frames in der Aufrufliste ab.Gets a string representation of the immediate frames on the call stack.

(Inherited from Exception)
TargetSite TargetSite TargetSite TargetSite

Ruft die Methode ab, die die aktuelle Ausnahme auslöst.Gets the method that throws the current exception.

(Inherited from Exception)
TypeName TypeName TypeName TypeName

Ruft den vollqualifizierten Namen des Typs ab, der die Ausnahme verursacht hat.Gets the fully qualified name of the type that causes the exception.

(Inherited from TypeLoadException)

Methoden

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetBaseException() GetBaseException() GetBaseException() GetBaseException()

Gibt beim Überschreiben in einer abgeleiteten Klasse eine Exception zurück, die die ursprüngliche Ursache für eine oder mehrere nachfolgende Ausnahmen ist.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Inherited from Exception)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Inherited from Object)
GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext)

Legt das SerializationInfo-Objekt mit dem Klassennamen, Methodennamen, der Ressourcen-ID und zusätzlichen Informationen zur Ausnahme fest.Sets the SerializationInfo object with the class name, method name, resource ID, and additional exception information.

(Inherited from TypeLoadException)
GetType() GetType() GetType() GetType()

Ruft den Laufzeittyp der aktuellen Instanz ab.Gets the runtime type of the current instance.

(Inherited from Exception)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Erstellt eine Zeichenfolgendarstellung der aktuellen Ausnahme und gibt diese zurück.Creates and returns a string representation of the current exception.

(Inherited from Exception)

Ereignisse

SerializeObjectState SerializeObjectState SerializeObjectState SerializeObjectState

Tritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmezustandsobjekt mit serialisierten Daten über die Ausnahme zu erstellen.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Inherited from Exception)

Gilt für:

Siehe auch