extern(C# 참조)
extern 한정자는 외부에서 구현되는 메서드를 선언하는 데 사용됩니다.extern 한정자는 일반적으로 Interop 서비스를 사용하여 비관리 코드를 호출할 때 DllImport 특성과 함께 사용됩니다.이 경우 다음 예제에서와 같이 메서드를 static으로 선언해야 합니다.
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
[!참고]
extern 키워드는 외부 어셈블리 별칭도 정의하여 단일 어셈블리 내에서 동일한 구성 요소의 다른 버전을 참조할 수 있도록 합니다.자세한 내용은 extern alias(C# 참조)를 참조하십시오.
abstract(C# 참조)와 extern 한정자를 함께 사용하여 같은 멤버를 제한할 수는 없습니다.extern 한정자는 메서드가 C# 코드 외부에서 구현됨을 나타내고 abstract 한정자는 해당 클래스에서 메서드가 구현되지 않음을 나타냅니다.
[!참고]
extern 키워드는 C++에서보다 더 제한적으로 사용됩니다.C++ 키워드와 비교하려면 C++ 언어 참조의 링크를 지정 하려면 extern을 사용 하 여를 참조하십시오.
예제
다음 예제에서는 프로그램이 사용자로부터 문자열을 수신하여 메시지 상자에 표시합니다.이 프로그램은 User32.dll 라이브러리에서 가져온 MessageBox 메서드를 사용합니다.
//using System.Runtime.InteropServices;
class ExternTest
{
[DllImport("User32.dll", CharSet=CharSet.Unicode)]
public static extern int MessageBox(IntPtr h, string m, string c, int type);
static int Main()
{
string myString;
Console.Write("Enter your message: ");
myString = Console.ReadLine();
return MessageBox((IntPtr)0, myString, "My Message Box", 0);
}
}
이 예제에서는 C 프로그램에서 DLL을 만들며, 다음 예제의 C# 프로그램 내에서 이 DLL을 호출합니다.
// cmdll.c
// Compile with: /LD
int __declspec(dllexport) SampleMethod(int i)
{
return i*10;
}
다음 예제에서는 두 개의 파일 CM.cs 및 Cmdll.c를 사용하여 extern 한정자를 설명합니다.C 파일은 예제 2에서 만든 외부 DLL로, C# 프로그램 내에서 호출됩니다.
// cm.cs
using System;
using System.Runtime.InteropServices;
public class MainClass
{
[DllImport("Cmdll.dll")]
public static extern int SampleMethod(int x);
static void Main()
{
Console.WriteLine("SampleMethod() returns {0}.", SampleMethod(5));
}
}
설명
프로젝트를 빌드하려면
Visual C++ 명령줄을 사용하여 Cmdll.c를 DLL로 컴파일합니다.
cl /LD Cmdll.c
명령줄을 사용하여 CM.cs를 컴파일합니다.
csc CM.cs
이렇게 하면 실행 파일 CM.exe가 만들어집니다.이 프로그램을 실행하면 SampleMethod는 값 5를 DLL 파일에 전달하고 DLL 파일은 이 값에 10을 곱한 값을 반환합니다.
C# 언어 사양
자세한 내용은 C# 언어 사양을 참조하십시오. 이 언어 사양은 C# 구문 및 사용법에 대한 신뢰할 수 있는 소스입니다.
참고 항목
참조
System.Runtime.InteropServices.DllImportAttribute