[c#] DLL에 무엇이 있으며 어떻게 작동합니까?



Answers

.dll 파일에는 응용 프로그램에서 사용할 수있는 컴파일 된 코드가 들어 있습니다.

때로는 .dll을 컴파일하는 데 사용되는 도구 가끔은 중요하지 않습니다. 프로젝트에서 .dll을 참조 할 수있는 경우 .dll의 노출 된 기능을 코딩하는 데 사용 된 도구는 중요하지 않습니다.

컴파일 타임에 링크하는 클래스와 같이 정적으로 링크 된 라이브러리와 달리 링크는 런타임에 발생합니다.

.dll은 자신이 쓰지 않으려는 응용 프로그램의 요구 사항을 제공하는 블랙 박스로 생각할 수 있습니다. 예, .dll의 서명을 이해하는 사람은 다른 코드로 다른 .dll 파일을 만들 수 있으며 호출 응용 프로그램은 차이점을 알 수 없습니다.

HTH

Question

저는 항상 C # 코드에서 DLL을 참조하고 있지만 명확히 밝히고 싶은 수수께끼는 다소 있습니다. 이것은 DLL과 관련된 일종의 두뇌 덤프입니다.

DLL이 동적으로 링크 된 라이브러리라는 것을 이해합니다. 이는 런타임에 다른 프로그램이이 라이브러리에 액세스하여 "기능"을 얻을 수 있음을 의미합니다. 그러나 Web.dllBusiness.dll ( Web.dll 은 프런트 엔드 기능이며 형식 및 메서드의 Business.dll 을 참조 Web.dll 과 함께 다음 ASP.NET 프로젝트를 고려하십시오.

  1. 어떤 시점에서 Web.dllBusiness.dll 동적으로 링크됩니까? Word (등)를 사용할 때 Windows 작업에서 하드 디스크 쓰 래싱이 많이 느껴진다. Word가 작동하고 다른 DLL의 기능을 동적으로 연결한다고 생각하십니까?

    1a. 또한 DLL로드 및 링크 - OS 또는 .NET Framework와 같은 일부 런타임 프레임 워크?

    1b. "연결"의 과정은 무엇입니까? 호환성 검사가 수행됩니까? 동일한 메모리에로드 중입니까? 실제로 연결이란 무엇입니까?

  2. 실제로 DLL에서 코드를 실행하는 것은 무엇입니까? 프로세서에 의해 실행되거나 프로세서가 DLL 내부의 코드를 이해하기 전에 번역 또는 컴파일의 다른 단계가 있습니까?

    2a. C # .NET에 내장 된 DLL의 경우 .NET Framework 또는 운영 체제에서 직접 실행하는 것은 무엇입니까?

  3. Linux에서 DLL이 Windows 시스템에서 작동합니까 (그러한 것이있는 경우), 아니면 운영 체제마다 다릅니 까?

  4. DLL은 특정 프레임 워크에만 해당합니까? C # .NET을 사용하여 빌드 된 DLL은 예를 들어 Borland C ++로 빌드 된 DLL에서 사용할 수 있습니까?

    4a. 4에 대한 대답이 "아니오"이면 DLL의 요점은 무엇입니까? 다양한 프레임 워크가 링크 된 파일에 대해 자체 형식을 사용하지 않는 이유는 무엇입니까? 예를 들어 .NET에 내장 된 .exe 파일은 .abc라는 파일 유형이 코드에 링크 할 수있는 어떤 것이라는 것을 알고 있습니다.

  5. Web.dll / Business.dll 예제로 Web.dll - 클래스 형식의 고객을 얻으려면 Web.dll 에서 Business.dll 을 참조해야합니다. 이것은 Business.dll 에 고객 클래스가 실제로 어떤 종류의 사양을 포함해야 함을 의미합니다. 내 Business.dll 파일을 컴파일했다면 델파이 : C #이 그것을 이해하고 고객 클래스를 만들 수 있을지, 헤더 정보 또는 "유감스럽게도 다른 곳에서 나를 사용할 수는 있습니다. 델파이 DLL을 "?

    5a. 메소드에도 똑같이 적용됩니다. CreateInvoice() 메서드를 DLL에 작성하고 C ++로 컴파일 한 다음 C #에서 액세스하여 실행할 수 있습니까? 무엇이 나를 멈추게하거나 허용합니까?

  6. DLL 하이재킹의 주제에 관해서는, 확실하게 대체 (나쁜) DLL은 하이재킹되는 것으로서 정확한 메소드 서명과 타입을 포함해야합니다. 원래 DLL에서 사용할 수있는 메서드를 찾을 수 있다면 그렇게하기가 어렵지 않을 것이라고 생각합니다.

    6a. 내 C # 프로그램에서 다른 DLL에 액세스 할 수 있는지 결정하는 것은 무엇입니까? 도용당한 DLL에 원본과 동일한 메서드와 형식이 포함되어 있지만 다른 언어로 컴파일 된 경우 작동합니까?

DLL 가져 오기 및 DLL 등록이란 무엇입니까?




Related



Tags

c# c#   .net .net   dll