이것은 매우 멍청한 질문 일 수 있지만, 오늘날의 웹 앱 개발 세계에서 많은 프로그래머는 dll을 많이 다룰 필요가 없으므로 자신의 목적에 대해 배우지 않아도됩니다.
그래서 dll은 무엇입니까?
- 그것은 무엇을 위해 사용됩니까?
- 어떻게 작동합니까?
- 어떻게 만드나요?
- 어떤 상황에서 적절한 것을 만들고 있습니까?
나는 dll이 함수 라이브러리를 저장하는 데 사용된다는 말을 들었지만 그 이상으로는 많이 알지 못합니다. 여기 누군가가 나를 깨달아 마침내 Windows 디렉토리의 모든 .dll 파일이 무엇을하는지 궁금해하는 것을 멈출 수 있기를 바랍니다.
답변
DLL은 동적 링크 라이브러리입니다. 여러 응용 프로그램 (또는 기타 라이브러리 / 모듈)에서 사용할 수있는 코드 및 / 또는 데이터 모음입니다.
예를 들어 파일을 처리하는 일반적인 방법, GUI 구성 요소 작업 등을 라이브러리에서 사용할 수 있으므로 여러 응용 프로그램이 동일한 기능을 사용할 수 있습니다. 이렇게하면 동일한 항목을 여러 번 빌드해야 할 필요성이 줄어들뿐만 아니라 예를 들어 공통 대화 상자가 응용 프로그램간에 동일하게 유지됩니다.
라이브러리는 런타임에로드 될 수 있으므로 서로 다른 동시 애플리케이션간에 공유됩니다. 이를 동적 연결이라고합니다.
어떤 경우에는 라이브러리가 응용 프로그램 자체에 포함될 수 있습니다. 이를 정적 연결이라고합니다. 정적 연결은 서로 다른 응용 프로그램이 각각 동일한 DLL 복사본을로드하므로 유연성을 희생하면서 배포를 더 쉽게 만듭니다.
그러나 정적 링크는 항상 옵션이 아닙니다. 예를 들어 .NET 애플리케이션을 정적으로 연결할 수 없습니다. .NET 애플리케이션을 실행하려면 사용자에게 .NET 라이브러리가 있어야하며 라이브러리 (또는 .NET에서 호출되는 어셈블리)는 런타임에로드됩니다.
DLL은 응용 프로그램을 만드는 데 사용되는 것과 동일한 도구로 만들어집니다. 구체적인 세부 사항은 사용되는 도구에 따라 크게 달라집니다.
답변
DLL = 동적 링크 라이브러리
이름은 실제로 그들이 성취 한 것을 아주 잘 설명합니다.
도서관
특정 문제 도메인에 대한 코드를 단일 위치로 격리 할 수 있습니다. 그런 다음 여러 응용 프로그램간에 공유하십시오. 라이브러리는 버그를 수정하거나 기능을 추가하기 위해 언제든지 다른 라이브러리로 교체 할 수 있습니다.
링크
라이브러리의 논리가 응용 프로그램으로 직접 컴파일되지 않도록 라이브러리를 응용 프로그램에 “연결”할 수 있습니다.
동적
라이브러리는 요청시로드 할 수 있습니다. 거대한 단일 EXE를 메모리에로드하는 대신 OS는 필요한 부분 만로드 할 수 있습니다. 또한 DLL이 애플리케이션간에 공유되는 경우 OS는 라이브러리로드 방법을 최적화하고 앱간에 공유 할 수 있습니다.
답변
DLL (동적 링크 라이브러리) 파일은 더 큰 프로그램이 잘 실행되도록 돕는 작은 “하위 프로그램”으로 설명 될 수 있습니다. 이들은 다양한 하드웨어 및 소프트웨어 리소스 (런타임 세션의 다양한 지점에서)를 “필요에 따라”기반으로 기본 실행 프로그램에 연결하는 수단을 제공합니다. 이렇게하면 프로그램이 처음 실행될 때 기본 실행 프로그램과 관련된 모든 작업을 컴퓨터의 RAM (랜덤 액세스 메모리)에로드 할 필요가 없습니다.
DLL이 전달하는 소프트웨어 리소스에는 프로그램을 계속 실행하는 데 실제로 필요하지 않은 다양한 프로그램 기능에 대한 코드가 포함되어 있습니다. 전혀 부를 수 있습니다. 프로그램이 처음 실행될 때 해당 기능 (그리고 주어진 프로그램에 대해 상당한 수의 기능이있을 수 있음)을 컴퓨터의 RAM에로드 한 다음 세션 내내 유지하는 것은 RAM 공간을 낭비하는 것입니다. 프리미엄.
주요 발전 :
DLL의 개발은 컴퓨팅의 주요 발전이었습니다. 그 이유는 프로그램이 처음로드 될 때 프로그램과 관련된 모든 작업 (거의 사용되지 않는 기능 포함)을 RAM에로드해야했기 때문입니다. 그 결과 컴퓨팅이 매우 비효율적이며 다양한 프로그램에서 속도가 느려졌습니다. 또한 RAM에 대한 부담 때문에 간단한 프로그램 몇 개를 실행하여 멀티 태스킹을하는 것도 매우 어려웠습니다.
고려 사항 :
DLL은 일반적으로 버전에 따라 다릅니다. 예를 들어 프로그램의 버전 1 (또는 경우에 따라 프로그래밍 언어)에서 잘 작동하는 것들은 버전 2에서 잘 작동하지 않을 수 있습니다. 일반적인 규칙은 이전 버전의 DLL이 작동하지 않는 경향이 있다는 것입니다. 새 버전에서는 잘 작동하지만 새 버전은 일반적으로 이전 버전의 프로그램이나 프로그래밍 언어와 잘 작동합니다.
답변
동적으로 연결된 라이브러리.
예를 들어, 다른 사람의 DLL을 응용 프로그램에로드 한 경우 여기에서 약간의 프로그래밍을 사용할 수 있습니다.
항상 “5”등으로 시작하는 난수를 생성하는 DLL을로드 할 수 있습니다.
프로그램에서 CrazyDLL.GenerateRandomNumbersSorta ()를 호출하면 번호가 반환됩니다.
실제 예를 들어, 4 개의 텍스트 상자를 결합한 DLL (IP 주소를 입력하는 데 사용함)이 있으며 256 개 미만의 숫자 만 자동으로 받아들이고 백 스페이스 키를 눌러 이전 텍스트 상자로 이동하는 것을 처리합니다.
해당 코드로 DLL을 만들었으며 이제 모든 코드를 반복해서 복제하지 않고도 해당 IP 주소 텍스트 상자 컬렉션을 더 많이 끌어서 놓기 만하면됩니다.
동일한 DLL에는 IP 주소를 16 진수 문자열 및 기타 유용한 코드로 변환하는 기능도 있습니다.
답변
에서 MSDN 라이브러리 :
DLL (동적 연결 라이브러리)은 다른 모듈 (응용 프로그램 또는 DLL)에서 사용할 수있는 함수와 데이터를 포함하는 모듈입니다.
답변
DLL = 동적 로드 링크 라이브러리. 말씀하신대로 기본적으로 함수, C ++ 클래스 및 / 또는 전역 변수의 모음입니다. DLL을 정적으로 (예 : 프로그램이 시작될 때 OS가 자동으로로드 함) 또는 동적 (프로그램이 명시 적으로로드 함)으로로드 할 수 있으며, 이때 DLL 내부의 기능과 항목을 프로그램에서 사용할 수 있습니다.
하나를 만드는 것은 main()
함수 가 필요하지 않다는 점을 제외하면 EXE를 만드는 것과 비슷 합니다. 링커에게 EXE가 아닌 DLL을 생성하도록 지시하는 링커 지시문이 있습니다.
이 작업을 수행하려는 주된 이유는 코드를 각 코드에 연결하는 대신 한 위치에 일부 코드를 캡슐화하고 여러 exe에서 사용하는 것입니다.
다소 역사적인 이유는 일부 코드가 물리적으로 다른 파일에 있기 때문에 exe가 더 작을 수 있기 때문입니다. 이것은 exe가 메모리에서 차지하는 공간이 더 적을 수 있음을 의미합니다. 최신 시스템에서는 Windows Mobile에서는 여전히 문제가 될 수 있지만 예전보다 덜 문제가됩니다.