EntryPointNotFoundException EntryPointNotFoundException EntryPointNotFoundException EntryPointNotFoundException Class

정의

진입 메서드가 없어서 클래스를 로드하지 못했을 때 throw되는 예외입니다.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
상속
특성

설명

EntryPointNotFoundException 공용 언어 런타임 어셈블리의 진입점을 식별할 수 없는 어셈블리를 로드할 수 없는 경우 예외가 throw 됩니다.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. 다음 조건에서이 예외가 throw 될 수 있습니다.This exception can be thrown under the following conditions:

  • 공용 언어 런타임 애플리케이션 진입점을 찾을 수 없는 (일반적으로 Main 메서드)에서 실행 가능한 어셈블리.The common language runtime is unable to locate an application entry point (typically a Main method) in an executable assembly. 애플리케이션 진입점이 전역 여야 합니다 또는 static 메서드 매개 변수 없이 또는 유일한 매개 변수로 문자열 배열입니다.The application entry point must be a global or static method that has either no parameters or a string array as its only parameter. 진입점을 반환할 수 있습니다 void를 반환할 수 있습니다 또는 Int32 또는 UInt32 종료 코드입니다.The entry point can return void, or it can return an Int32 or UInt32 exit code. 애플리케이션 어셈블리는 둘 이상의 진입점을 정의할 수 없습니다.An application assembly cannot define more than one entry point.

  • 함수를 찾을 수 없으므로 Windows DLL의 함수에 대 한 호출을 확인할 수 없습니다.The call to a function in a Windows DLL cannot be resolved because the function cannot be found. 다음 예제에서는 EntryPointNotFoundException User32.dll 라는 함수를 포함 하지 않기 때문에 예외가 throw 됩니다 GetMyNumber합니다.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'.
    
  • 메서드 호출에 사용할 이름을 어셈블리에서 찾을 이름 일치 하지 않으므로 Windows DLL의 함수에 대 한 호출을 확인할 수 없습니다.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. 자주,이 때문에 발생 합니다 DllImportAttribute.ExactSpelling 필드가 암시적 또는 명시적으로 설정 됩니다 true, 호출된 된 메서드가 하나 이상의 문자열 매개 변수를 포함 하며 ANSI 및 유니코드 버전을 모두 및 메서드 호출에 사용할 이름을 하지 않습니다 이 ANSI 또는 유니코드 버전의 이름에 해당 합니다.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. 다음 예는 Windows를 호출 하 여 그림에서는 MessageBox User32.dll의 함수입니다.The following example provides an illustration by attempting to call the Windows MessageBox function in User32.dll. 첫 번째 메서드 정의 지정 하므로 CharSet.Unicode 함수의 와이드 문자 버전은 공용 언어 문자열 마샬링을 MessageBoxW, 메서드 호출에 사용 되는 이름 대신 MessageBox합니다.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. 두 번째 메서드 정의 호출 하 여이 문제를 해결 합니다 MessageBoxW 대신는 MessageBox 함수입니다.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
    
  • 트 데코 레이 된 이름 보다 간단한 해당 이름으로 동적 연결 라이브러리의 함수를 호출 하려고 합니다.You are trying to call a function in a dynamic link library by its simple name rather than its decorated name. 일반적으로 c + + 컴파일러는 DLL 함수에 대 한 데코 레이트 된 이름을 생성합니다.Typically, the C++ compiler generates a decorated name for DLL functions. 다음 c + + 코드 라는 함수를 정의 하는 예를 들어 Double 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;
    }
    

    다음 예제에서 코드에서 함수를 호출 하려고 할 때를 EntryPointNotFoundException 없으므로 예외가 throw 됩니다는 Double 함수를 찾을 수 없습니다.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()
    

    그러나 해당 데코 레이트 된 이름을 사용 하 여 함수를 호출 하는 경우 (이 예제의 경우 ?Double@@YAHH@Z), 함수 호출에 성공 하면 다음 예와 같이 합니다.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 
    

    Dumpbin.exe와 같은 유틸리티를 사용 하 여 DLL에서 내보내기 함수의 데코레이팅된 이름을 찾을 수 있습니다.You can find the decorated names of functions exported by a DLL by using a utility such as Dumpbin.exe.

  • 관리 되지 않는 동적 연결 라이브러리를 것 처럼 관리 되는 어셈블리의 메서드를 호출 하려고 합니다.You are attempting to call a method in a managed assembly as if it were an unmanaged dynamic link library. 이 실행 중인 확인 하려면 다음 예제를 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
    

    다음 컴파일 및 호출 하려고 하는 다음 예제를 실행 하는 StringUtilities.SayGoodMorning StringUtilities.dll 동적 연결 라이브러리의 메서드 비관리 코드 처럼 합니다.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. 결과 EntryPointNotFoundException 예외입니다.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()
    

    예외를 제거 하려면 관리 되는 어셈블리 및 액세스에 대 한 참조를 추가 합니다 StringUtilities.SayGoodMorning 다음 예제와 같이 관리 코드에서 다른 메서드 액세스와 마찬가지로 메서드.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!
    
  • Windows DLL 처럼 COM DLL의 메서드를 호출 하려고 합니다.You are trying to call a method in a COM DLL as if it were a Windows DLL. COM DLL에 액세스 하려면 합니다 참조 추가 프로젝트에 대 한 참조를 추가 하 고 다음에서 형식 라이브러리를 선택 하려면 Visual Studio에서 옵션을 COM 탭.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.

인스턴스의 초기 속성 값의 목록을 EntryPointNotFoundException, 참조는 EntryPointNotFoundException 생성자입니다.For a list of initial property values for an instance of EntryPointNotFoundException, see the EntryPointNotFoundException constructors.

생성자

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

EntryPointNotFoundException 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the EntryPointNotFoundException class.

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

serialize된 데이터를 사용하여 EntryPointNotFoundException 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the EntryPointNotFoundException class with serialized data.

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

지정된 오류 메시지를 사용하여 EntryPointNotFoundException 클래스의 새 인스턴스를 초기화합니다.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)

지정된 오류 메시지와 해당 예외의 원인인 내부 예외에 대한 참조를 사용하여 EntryPointNotFoundException 클래스의 새 인스턴스를 초기화합니다.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.

속성

Data Data Data Data

예외에 대한 사용자 정의 추가 정보를 제공하는 키/값 쌍의 컬렉션을 가져옵니다.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Inherited from Exception)
HelpLink HelpLink HelpLink HelpLink

이 예외와 연결된 도움말 파일에 대한 링크를 가져오거나 설정합니다.Gets or sets a link to the help file associated with this exception.

(Inherited from Exception)
HResult HResult HResult HResult

특정 예외에 할당된 코드화된 숫자 값인 HRESULT를 가져오거나 설정합니다.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Inherited from Exception)
InnerException InnerException InnerException InnerException

현재 예외를 발생시킨 Exception 인스턴스를 가져옵니다.Gets the Exception instance that caused the current exception.

(Inherited from Exception)
Message Message Message Message

이 예외에 대한 오류 메시지를 가져옵니다.Gets the error message for this exception.

(Inherited from TypeLoadException)
Source Source Source Source

오류를 발생시키는 애플리케이션 또는 개체의 이름을 가져오거나 설정합니다.Gets or sets the name of the application or the object that causes the error.

(Inherited from Exception)
StackTrace StackTrace StackTrace StackTrace

호출 스택의 직접 실행 프레임에 대한 문자열 표현을 가져옵니다.Gets a string representation of the immediate frames on the call stack.

(Inherited from Exception)
TargetSite TargetSite TargetSite TargetSite

현재 예외를 throw하는 메서드를 가져옵니다.Gets the method that throws the current exception.

(Inherited from Exception)
TypeName TypeName TypeName TypeName

이 예외를 발생시킨 형식의 정규화된 이름을 가져옵니다.Gets the fully qualified name of the type that causes the exception.

(Inherited from TypeLoadException)

메서드

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

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

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

파생 클래스에서 재정의되었을 때, 하나 이상의 후속 예외의 근본 원인이 되는 Exception을 반환합니다.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()

기본 해시 함수로 작동합니다.Serves as the default hash function.

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

클래스 이름, 메서드 이름, 리소스 ID 및 추가 예외 정보를 사용하여 SerializationInfo 개체를 설정합니다.Sets the SerializationInfo object with the class name, method name, resource ID, and additional exception information.

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

현재 인스턴스의 런타임 형식을 가져옵니다.Gets the runtime type of the current instance.

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

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

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

현재 예외에 대한 문자열 표현을 만들고 반환합니다.Creates and returns a string representation of the current exception.

(Inherited from Exception)

이벤트

SerializeObjectState SerializeObjectState SerializeObjectState SerializeObjectState

예외에 대한 serialize된 데이터가 들어 있는 예외 상태 개체가 만들어지도록 예외가 serialize될 때 발생합니다.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Inherited from Exception)

적용 대상

추가 정보