C#에서 DLL을 만들고 호출하는 방법
I. 앞에 쓰기C# 언어는 엔터프라이즈 응용 프로그램을 작성하는 데 사용되는 간단하지만 강력한 프로그래밍 언어입니다.C# 언어는 C 및 C++ 언어에서 개발되었으며 문, 식 및 연산자에 많은 C++ 함수를 사용합니다.C# 언어는 유형 안전, 버전 변환, 이벤트 및 쓰레기 수집에서 상당한 개선과 혁신을 이루었습니다.C# 언어는 공통 API 스타일에 대한 액세스를 제공합니다. C# 언어는 NET Framework, COM, 자동화 및 C 스타일 API와 같은 일반적인 API 스타일에 대한 액세스를 제공합니다.동적 링크 라이브러리란 무엇인가요? DLL의 세 글자는 친숙할 것입니다. 동적 링크 라이브러리(DLL)는 * * * 함수 라이브러리의 실행 파일입니다. 동적 링크는 프로세스가 실행 코드의 일부가 아닌 함수를 호출할 수 있는 방법을 제공합니다. 함수의 실행 코드는 함수를 사용하는 프로세스와 독립적으로 컴파일, 링크 및 저장되는 하나 이상의 함수가 포함된 DLL에 있으며, DLL은 * * * 데이터 및 리소스를 즐기는 데도 도움이 됩니다. 여러 애플리케이션이 동시에 메모리에 있는 단일 DLL 사본의 콘텐츠에 액세스할 수 있습니다. 대부분의 프로그래머와 마찬가지로 여러분도 DLL을 꽤 많이 사용했을 것입니다. 그리고 프로그래밍과 코딩 측면에서 좋은 결과와 나쁜 결과를 느꼈습니다. 오늘은 C#에서 DLL(동적 링크 라이브러리)을 만들고 호출하는 방법에 대해 여러분과 함께 논의하고자 합니다. 사실 DLL을 사용하면 애플리케이션을 보다 유연하게 구성하고 작성할 수 있습니다. 소프트웨어 디자이너로서 저는 이를 기반으로 높은 코드 재사용률을 달성할 수 있습니다. C#에서 DLL을 생성하고 호출하는 방법을 설명하겠습니다. 다음으로 다음에 수행할 작업에 대해 간략하게 설명하겠습니다. 이 글에서는 C#을 사용하여 MyDLL.DLL이라는 동적 링크 라이브러리를 만들겠습니다. 이 DLL 파일에는 두 개의 매개변수를 값으로 교환하는 함수와 두 매개변수의 최대공약수를 구하는 함수 두 개를 제공합니다. 그런 다음 이 DLL을 사용할 애플리케이션을 만들어 실행하고 결과를 출력합니다. 셋째, DLL 만들기 다음 세 개의 C# 코드 파일을 만들어 봅시다.1, myswap . cs using System; namespace my methods { public class Swap class { public static bool Swap(ref long I, ref long j){ I = I+j; j = I-j; I = I-j; return true} }} 2, MyMaxCD. csusing system; namespace my methods { public class MaxCD class { public static long MaxCD(long I, long j) { long a, b, temp if (i & gtj) { a = I; b = j; } else { b = I; a = j; } temp = a % b; while(temp! = 0){ a = b; b = temp; temp = a % b; } return b; }}}} 이 두 파일을 만들 때 Visual Studio.NET이나 다른 텍스트 편집기, 심지어 메모장을 사용할 수 있다는 점에 유의하세요. 이 두 파일은 같은 파일은 아니지만 같은 네임스페이스에 속하므로 나중에 두 가지 방법을 모두 사용하기에 편리합니다. 물론 다른 네임 스페이스에 속할 수도 있지만 완벽하게 괜찮지 만 적용 할 때 두 개의 다른 네임 스페이스를 참조해야하므로 저자는 하나의 네임 스페이스에 작성하는 것이 더 낫다고 제안합니다. 다음 작업은 이 두 개의 cs 파일을 필요한 DLL 파일로 바꾸는 것입니다. 이를 수행하는 방법은 다음과 같습니다. Microsoft.NET Framework가 설치된 운영 체제에서는 Windows가 있는 디렉터리에서 Microsoft.NET 디렉터리를 찾을 수 있습니다. 이 디렉터리에는 C# 컴파일러가 있습니다. csc.exe run:csc/target:library/out:mydll . dllymyswap . csmymaxcd . cs를 실행하고 완료되면 이 디렉터리에서 방금 생성한 MyDLL.DLL 파일을 찾을 수 있습니다. 대상: 라이브러리 컴파일러 옵션은 컴파일러가 EXE 파일 대신 DLL 파일을 출력하도록 지시합니다. 파일 이름 뒤에 오는 /out 컴파일러 옵션은 DLL 파일 이름을 지정하는 데 사용됩니다. 파일 이름 컴파일러 뒤에 /out이 오지 않으면 첫 번째 파일(MySwap.cs)이 DLL 파일 이름으로 사용됩니다. 결과 파일은 MySwap.DLL입니다. 4. DLL을 사용하여 방금 작성한 두 가지 메서드가 올바른지 테스트하는 간단한 프로그램을 작성해 보겠습니다. 자, 저를 따라하세요:내 클라이언트 . cs using System; using my method; //여기서는 방금 정의한 네임스페이스를 참조하고 있습니다. 이 두 파일을 두 개의 다른 네임스페이스에 작성했다면, 내 클라이언트 { public static void main(string[]args){ if(args . length!= 2) { console. writeLine("Usage:MyClient & ltnum 1 & gt; & ltnum 2 >;"); return; } long num1 = long. parse(args[0]); long num2 = long. parse(args[1]); Swap(order). Swap(ref num1, ref num 2); //파일 시작 부분의 using 지시어를 사용하면 컴파일 타임에 DLL 메서드를 참조할 수 있습니다 console.write("스왑의 결과는 num 1 = {0}, num 2 = {1}입니다", num 1, num 2); long maxcd = MaxCDClass . maxCD(num1, num 2); console. writeLine(" { 0 }과 {1} 결과 MaxCD는 {2} ", num1, num2, MaxCD); }}실행 가능한 MyClient.exe를 생성하려면 다음 명령줄을 사용합니다.CSC/out:myclient.exe/ 참조:-mylibrary.dll-MyClient.cs/out 컴파일러 옵션은 컴파일러에 exe 파일을 출력하고 출력 파일명(내 클라이언트 . exe). 참조 컴파일러 옵션은 이 프로그램에서 참조하는 DLL 파일을 지정합니다. 프로그램을 실행하려면 EXE 파일 이름 뒤에 숫자 두 개를 입력합니다(예: MyClient 123 456 VI). 출력되는 exe는 숫자 1 = 456, 숫자 2 = 123 456 및 123(MaxCD 3 VII) 요약 동적 연결에는 다음과 같은 이점이 있습니다. 많은 프로세스가 동시에 하나의 DLL을 사용하고 메모리에서 해당 DLL의 복사본을 공유할 수 있습니다. 반면 정적으로 링크된 라이브러리로 생성된 각 애플리케이션에 대해 Windows는 라이브러리 코드의 복사본을 메모리에 로드해야 합니다. 디스크 공간 절약. 많은 응용 프로그램이 디스크에 DLL의 사본을 * * * 사용할 수 있습니다. 대신 정적 링크 라이브러리로 생성된 각 애플리케이션은 라이브러리 코드가 실행 이미지에 별도의 사본으로 링크되어 있습니다. DLL로 업그레이드하는 것이 더 쉽습니다. DLL의 함수가 변경되더라도 함수의 인수와 반환값이 변경되지 않는 한 해당 함수를 사용하는 애플리케이션을 다시 컴파일하거나 다시 링크할 필요가 없습니다. 반면 정적으로 링크된 객체 코드는 함수가 변경될 때 애플리케이션을 다시 링크해야 합니다. 판매 후 지원 제공. 예를 들어, 디스플레이 드라이버 DLL을 수정하여 애플리케이션이 처음 제공되었을 때 사용할 수 없었던 디스플레이를 지원할 수 있습니다. 다국어 프로그램 지원. 다른 프로그래밍 언어로 작성된 프로그램도 함수 호출 규칙을 따르는 한 동일한 DLL 함수를 호출할 수 있습니다. 함수가 인수를 스택에 푸시하는 순서, 스택을 지우는 책임이 함수 또는 애플리케이션에 있는지 여부, 인수가 레지스터에 전달되는지 여부 등의 측면에서 프로그램과 DLL 함수는 호환되어야 합니다. MFC 라이브러리 클래스 확장을 위한 메커니즘을 제공합니다. 기존 MFC 클래스에서 클래스를 파생하여 MFC 애플리케이션의 MFC 확장 dll에 넣을 수 있습니다. 국제 버전을 쉽게 만들 수 있습니다. 리소스를 DLL에 넣으면 애플리케이션의 국제 버전을 훨씬 쉽게 만들 수 있습니다. 애플리케이션의 각 언어 버전에 대한 문자열을 별도의 DLL 리소스 파일에 넣고 다른 언어 버전이 적절한 리소스를 로드하도록 할 수 있습니다. DLL 사용의 한 가지 잠재적 단점은 애플리케이션이 독립형이 아니라 별도의 DLL 모듈이 있어야 한다는 것입니다.