문제

를 알고 싶 정확한 차이 dll 및 exe 파일입니다.

도움이 되었습니까?

해결책

exe :

  1. 실행 파일입니다
  2. 실행 파일을로드 할 때 내보내기가 호출되지 않고 모듈 진입 점만 호출됩니다.
  3. 시스템이 새로운 실행 파일을 시작하면 새로운 프로세스가 생성됩니다.
  4. 항목 스레드는 해당 프로세스의 주요 스레드와 관련하여 호출됩니다.

DLL :

  1. 동적 링크 라이브러리입니다
  2. 수출 된 기호가 여러 개 있습니다.
  3. 시스템은 기존 프로세스의 컨텍스트에 DLL을로드합니다.

자세한 사항은: http://www.c-sharpcorner.com/interviews/answer/answers.aspxquestionid=1431&majorcategoryId=1&minorcategoryId=1 http://wiki.answers.com/q/what_is_the_difference_between_an_exe_and_a_dll

참조: http://www.dotnetspider.com/forum/34260-what-difference-between-dll-exe.aspx

다른 팁

모든 사람들이 .NET의 맥락 에서이 질문에 왜이 질문에 대답하고 있는지 모르겠습니다. 질문은 일반적인 것이었고 어디서나 .net을 언급하지 않았습니다.

주요 차이점은 다음과 같습니다.

exe

  1. EXE는 항상 자체 주소 공간에서 실행되며 별도의 프로세스입니다.
  2. EXE의 목적은 자체적으로 별도의 응용 프로그램을 시작하는 것입니다.

DLL

  1. DLL은 항상 호스트 exe가 필요합니다. 즉, 자체 주소 공간에서는 결코 실행할 수 없습니다.
  2. DLL의 목적은 다른 응용 프로그램에서 재사용 할 수있는 메소드/클래스 모음을 갖는 것입니다.
  3. DLL은 Microsoft의 공유 라이브러리 구현입니다.

DLL 및 EXE의 파일 형식은 본질적으로 동일합니다. Windows는 파일의 PE 헤더를 통해 DLL과 EXE의 차이점을 인식합니다. PE 헤더에 대한 자세한 내용은 MSDN 에서이 기사를 볼 수 있습니다.

차이점은 EXE에 실행시 실행될 "메인"메소드 인 진입 점이 있다는 것입니다.

DLL 내의 코드는 다른 응용 프로그램에서 호출되어야합니다.

거기에 몇 가지 더 많은 차이점에 대해 구조할 수 있습니다.

  1. 모두 DLL 및 EXE 동일한 파일을 공유 구조-휴대용 실행,또는 PE.둘 사이를 구분,하나에서 볼 수 있습 CharacteristicsIMAGE_FILE_HEADERIMAGE_NT_HEADERS.에 대한 DLL,그것은 IMAGE_FILE_DLL (0x2000)플래그를 켜져 있습니다.에 대한 EXE 그 IMAGE_FILE_EXECUTABLE_IMAGE (0x2)플래그입니다.
  2. PE 파일 구성의 일부 헤더와 숫자의 섹션이 있습니다.일반적으로있는 섹션 코드에 대해,섹션에 대한 데이터는 섹션 목록을 가져오는 함수와 섹션에 대한 자원입니다.어떤 섹션에 포함될 수 있습보다 더 한 것입니다.헤더에 대해서도 설명합 목록의 데이터 디렉토리에 있는 섹션이 있습니다.데이터 디렉토리는 무엇을 할 수 있습 Windows 을 찾아 그것이 무엇이 필요에 PE.그러나 한 가지 유형의 데이터는 디렉토리 EXE 없을 것입니다(하지 않는 한 당신은 프랑켄슈타인 EXE)는 수출 디렉토리에 있습니다.이것은 어디 DLL 파일이 있는 목록의 기능 그들은 내보내기에 의해 사용될 수 있습 다른 EXE 또는 DLL 파일이 있습니다.다른 측면에서,각 DLL 및 EXE 가 가져올 디렉토리 목록 기능과 DLL 파일이 필요합니다.
  3. 또한 PE 헤더(IMAGE_OPTIONAL_HEADER 이) ImageBase 회원입니다.그것은 지정하는 가상 주소를 PE 서 그것이 로드됩니다.드되는 경우에 또 다른 주소,일부 포인터 수 있는 잘못된 메모리입니다.로 EXE 파일은 사이 될 첫 번째 로드 그들의 새로운 주소 공간,Windows loader 을 확신할 수 있는 일정한 부하 주소는 일반적으로 0x00400000.럭셔리지 않는 존재에 대한 DLL.두 DLL 로드된 파일로는 같은 프로세스를 요청할 수 있습니다.이런 이유로 응용 프로그램이 다른 데이터 라는 디렉토리를 기본 재배치하는 디렉토리에 있는 일반적으로 자신의 섹션 .reloc.이 디렉토리 목록이 포함되어의 장소에서 DLL 될 필요가 있는 주소/patched 그래서 그들은 포인트 오른쪽에는 메모리.가장 EXE 파일이 없는 이 디렉토하지만,일부 오래된 컴파일러지 그들을 생성합니다.

읽을 수 있습니다 더 많은 이 주제에 대한@ MSDN.

이 답변은 내가 생각했던 것보다 조금 더 상세했지만 읽었습니다.

DLL :
대부분의 경우 DLL 파일은 a입니다 도서관. 동적 및 정적 인 몇 가지 유형의 라이브러리가 있습니다. 차이점에 대해 읽으십시오. DLL은 동적 링크 도서관 그것은 우리에게 그것이 a라고 알려줍니다 부분 프로그램의 그러나 ~ 아니다 모든 일. 재사용 가능한 소프트웨어 구성 요소로 만들어졌습니다.도서관) 당신이 사용할 수있는 것 단일 프로그램 이상. Copy-Paste를 사용하여 많은 응용 프로그램에서 라이브러리 소스 코드를 항상 사용할 수 있지만 DLL/STATIC 라이브러리의 아이디어는 라이브러리 코드를 업데이트하고 동시에 사용하여 모든 응용 프로그램을 업데이트 할 수 있다는 것입니다. 그것 - 컴파일없이.

예를 들어:
당신이 만들고 있다고 상상해보십시오 Windows GUI 구성 요소 같은 단추. 대부분의 경우 코드는 복잡하지만 코드를 재사용하고 싶습니다. 흔한 구성 요소 - 많은 응용 프로그램을 사용하려면 모든 프로그램에서 버튼의 코드를 복사 할 수없는 소스 코드를 제공하고 싶지 않으므로 DL-Library (DLL).

이것 "단추" 라이브러리가 필요합니다 exe절단 가능성은 실행되며, 그것 없이는 버튼을 만드는 방법을 모르기 때문에 실행되지 않습니다.

마찬가지로, DLL은 실행할 수 없습니다 - 실행할 수는 없습니다. 프로그램의 일부일 뿐이지 만 "프로세스".

exe :
실행 파일입니다 프로그램. 만드는 방법을 알고 있습니다 프로세스 그리고 DLL과 대화하는 방법. 그것 필요합니다 버튼을 만들기위한 DLL과 그 없이는 응용 프로그램이 실행되지 않습니다 - 오류.

도움이 되었기를 바랍니다....

dll과 exe는 모두입니다 휴대용 실행 가능 (PE) 형식

동적 링크 라이브러리 (DLL) 라이브러리이므로 직접 실행할 수 없습니다. 실행하려고하면 누락 된 진입 점에 대한 오류가 발생합니다. 실행하려면 진입 점 (주 기능)이 필요하며, 출입구는 모든 응용 프로그램 또는 EXE 일 수 있습니다. DLL 바인딩은 런타임에 발생합니다. 그렇기 때문에 "동적 링크"라이브러리라고합니다.

an 실행 파일 (exe) 실행할 수있는 프로그램입니다. 자체 진입 점이 있습니다. PE 헤더 내부의 플래그는 파일 유형 (파일 확장자와 관련이 없음)을 나타냅니다. PE 헤더에는 프로그램의 진입 점이있는 필드가 있습니다. DLL에서는 사용되지 않습니다 (또는 적어도 진입 점이 아닙니다).

많이있다 소프트웨어 헤더 정보를 확인할 수 있습니다. 둘 다 다르게 작동하게하는 유일한 차이는 아래 다이어그램과 같이 헤더의 비트입니다.

header

EXE 파일은 단일 기본 항목 만 가지고 있으며, 시스템이 EXE를 시작하면 새로운 프로세스가 생성되는 반면 DLL은 많은 진입 점이 있으므로 응용 프로그램을 사용하면 새 프로세스가 시작되지 않으면 DLL을 재사용하고 버전화 할 수 있습니다. DLL은 다른 프로그램이 동일한 DLL을 사용할 수 있으므로 저장 공간을 줄입니다.

dll v/s exe

1) DLL 파일은 EXE 파일 및 기타 DLL 파일에서 사용할 수있는 동적 링크 라이브러리입니다.
EXE 파일은 OS에서 관리하는 별도의 프로세스에서 실행되는 실행 파일입니다.

2) DLL은 직접 실행 가능하지 않습니다. 이들은 계산 및 기능을 수행하기 위해 프로그램 및 기타 DLL에서 호출 할 수있는 기능을 포함하는 별도의 파일입니다.
EXE는 실행할 수있는 프로그램입니다. 예 : Windows 프로그램

3) 재사용 성
DLL : 다른 응용 프로그램에 대해 재사용 할 수 있습니다. 코더가 DLL 파일의 함수 및 절차의 이름과 매개 변수를 알고있는 한.
exe : 특정 목적을 위해서만.

4) DLL은 호출 응용 프로그램의 동일한 프로세스 및 메모리 공간을 공유합니다.
Exe는 별도의 프로세스와 메모리 공간을 만듭니다.

5) 용도
DLL : 많은 응용 프로그램을 사용하려면 모든 프로그램에서 버튼의 코드를 복사 할 수없는 소스 코드를 제공하고 싶지 않으므로 DL-Library (DLL을 작성하기로 결정합니다. ).

EXE : Windows Forms Applications, Console Applications, WPF 응용 프로그램 및 Windows 서비스와 같은 프로젝트 템플릿으로 작업하면 컴파일되면 EXE 어셈블리를 생성합니다.

6) 유사성 :
DLL과 EXE는 이진 파일 모두 휴대용 실행 가능 형식으로 정의 된 복잡한 중첩 구조를 가지며 사용자가 편집 할 수 있도록 의도되지 않습니다.

두 가지 : 파일에 저장된 확장자와 헤더 플래그.

두 파일 모두 PE 파일입니다. 둘 다 동일한 레이아웃을 포함합니다. DLL은 라이브러리이므로 실행할 수 없습니다. 실행을 시도하면 누락 된 진입 점에 대한 오류가 발생합니다. EXE는 실행할 수있는 프로그램입니다. 진입 점이 있습니다. PE 헤더 내부의 플래그는 파일 유형 (파일 확장자와 관련이없는 파일 유형)을 나타냅니다. PE 헤더에는 프로그램의 진입 점이있는 필드가 있습니다. DLL에서는 사용되지 않습니다 (또는 적어도 진입 점이 아닙니다).

한 가지 사소한 차이점은 대부분의 경우 dlls 기호가 내보내는 수출 섹션이 있습니다. exes는 라이브러리가 아니기 때문에 수출 섹션이 없어서는 안됩니다. Win32 로더는 어느 쪽이든 신경 쓰지 않습니다.

그 외에는 동일합니다. 따라서 요약하면 EXE는 실행 가능한 프로그램이며 DLL은 프로세스에로드 된 라이브러리이며 보안, 데이터베이스 액세스 등과 같은 유용한 기능을 포함합니다.

EXE는 시스템에 일반 Win32 실행 파일로 보입니다. 진입 점은 .NET 런타임을 초기화하는 작은 로더를 의미하며 EXE에 포함 된 어셈블리를로드하고 실행하도록 지시합니다. DLL은 시스템에 Win32 DLL으로 볼 수 있지만 대부분의 진입 점이 없을 가능성이 높습니다. .NET 런타임은 자체 헤더에 포함 된 어셈블리에 대한 정보를 저장합니다.

DLL은 .Exe로서 이러한 기능을 호출 할 수있는 실행 파일 인 재사용 가능한 기능 모음입니다.

.exe는 프로그램입니다. .dll은 .exe (또는 다른 .dll)가 호출 할 수있는 라이브러리입니다.

Sakthivignesh가 말하는 것은 하나의 .exe가 라이브러리 인 것처럼 다른 하나를 사용할 수 있으며, 이는 일부 COM 구성 요소로 수행됩니다. 이 경우 "슬레이브".exe는 별도의 프로그램 (엄격하게 말하면 별도의 프로세스 - 아마도 별도의 컴퓨터에서 실행)이지만 다른 프로그램/구성 요소/무엇이든지 요청을 받아들이고 처리하는 프로그램입니다.

그러나 프로그램 파일의 폴더에서 랜덤 .Exe 및 .dll을 선택하면 COM이 관련이 없을 가능성이 있습니다. 단지 프로그램 일뿐입니다. 동적으로 연결된 라이브러리입니다.

Win32 API를 사용하여 프로그램은 loadlibrary 및 getProcaddress API 함수 인 IIRC를 사용하여 DLL을로드하고 사용할 수 있습니다. Win16에는 비슷한 기능이있었습니다.

Com은 여러면에서 DLL 아이디어의 진화이며, 원래 OLE2의 기초로 냉장 한 반면 .NET은 com의 후손입니다. DLL은 Windows 1, IIRC 이후에있었습니다. 원래 메모리 사용을 최소화하기 위해 여러 실행 프로그램간에 이진 코드 (특히 시스템 API)를 공유하는 방법이었습니다.

● .exe 및 dll은 컴파일 된 C# 코드 버전으로 어셈블리라고도합니다.

● .exe는 독립형 실행 파일로 직접 실행할 수 있음을 의미합니다.

● .dll은 직접 실행할 수없는 재사용 가능한 구성 요소이며 다른 프로그램을 실행해야합니다.

EXE는 실행 가능한 프로그램이고 DLL은 프로그램에 의해로드 및 실행될 수있는 파일입니다.

DLL과 EXE의 차이 :

1) DLL은 프로세스 내 구성 요소로 클라이언트 프로세스와 동일한 메모리 공간에서 실행되는 것을 의미합니다. EXE는 자체 메모리 공간에서 실행되는 공정 구성 요소입니다.

2) DLL에는 다른 프로그램이 사용할 수있는 기능과 절차가 포함되어 있으며 (재활용 가능성을 촉진) EXE는 다른 프로그램과 공유 할 수 없습니다.

3) DLL은 다른 프로그램에 의해로드되고 실행되도록 설계되었으므로 직접 실행할 수 없습니다. Exe는 직접 실행되는 프로그램입니다.

DLL과 EXE의 주요 차이점은 진입 점이없고 EXE가 수행하지 않습니다. C ++에 익숙하다면 Build Exe가 Main () 항목 함수가 있고 DLL이 그렇지 않다는 것을 알 수 있습니다. :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top