비교적 큰 응용 프로그램 은 모두 많은 모듈 로 구성 되 는데 이런 모듈 들 은 상대 적 으로 독립 된 기능 을 완성 하고 서로 협력 하여 전체 소프트웨어 시스템 의 작업 을 완성 한다.일부 모듈 의 기능 이 비교적 통용 되 고 다른 소프트웨어 시스템 을 구축 할 때 도 사용 된다.소프트웨어 시스템 을 구성 할 때 모든 모듈 의 소스 코드 를 전체 응용 프로그램 EXE 파일 에 정적 으로 컴 파일 하면 문제 가 발생 할 수 있 습 니 다.한 가지 단점 은 응용 프로그램의 크기 를 증가 시 키 고 더 많은 디스크 공간 을 차지 하 며 프로그램 이 실 행 될 때 도 비교적 큰 메모리 공간 을 소모 하여 시스템 자원 의 낭 비 를 초래 하 는 것 입 니 다.또 다른 단점 은 큰 EXE 프로그램 을 만 들 때 재 구축 을 수정 할 때마다 모든 소스 코드 를 조정 하고 컴 파일 과정의 복잡성 을 증가 하 며 단계 적 인 유닛 테스트 에 도 불리 하 다 는 것 이다.Windows 시스템 플랫폼 에 서 는 완전히 다른 효과 적 인 프로 그래 밍 과 운영 환경 을 제공 합 니 다.독립 된 프로그램 모듈 을 작은 DLL 파일 로 만 들 고 따로 컴 파일 하고 테스트 할 수 있 습 니 다.실행 할 때 EXE 프로그램 이 이 DLL 모듈 을 호출 하려 는 경우 에 만 시스템 이 메모리 공간 에 불 러 옵 니 다.이 방식 은 EXE 파일 의 크기 와 메모리 공간 에 대한 수 요 를 줄 일 뿐만 아니 라 이 DLL 모듈 을 여러 프로그램 에서 동시에 사용 할 수 있 게 한다.윈도 우즈 는 자체 적 으로 일부 주요 시스템 기능 을 DLL 모듈 로 구현 한다.일반적으로 DLL 은 디스크 파일 로'dll','DRV','FON','SYS'와'EXE'를 확장자 로 하 는 많은 시스템 파일 이 DLL 일 수 있다.이것 은 전역 데이터,서비스 함수 와 자원 으로 구성 되 어 있 으 며,실행 할 때 시스템 에 의 해 호출 프로 세 스 의 가상 공간 으로 불 러 와 호출 프로 세 스 의 일부분 이 됩 니 다.다른 DLL 과 충돌 하지 않 으 면 이 파일 은 프로 세 스 가상 공간의 같은 주소 에 매 핑 됩 니 다.DLL 모듈 에는 외부 에 서 비 스 를 제공 하기 위 한 다양한 내 보 내기 함수 가 포함 되 어 있 습 니 다.DLL 은 자신의 데이터 세그먼트 가 있 을 수 있 지만 스 택 이 없 으 며 프로그램 을 호출 하 는 것 과 같은 스 택 모드 를 사용 합 니 다.DLL 은 메모리 에 하나의 인 스 턴 스 만 있 습 니 다.DLL 은 코드 봉인 성 을 실현 했다.DLL 의 작성 은 구체 적 인 프로 그래 밍 언어 및 컴 파 일 러 와 무관 하 다.Win 32 환경 에서 모든 프로 세 스 는 자신의 읽 기/쓰기 전역 변 수 를 복사 합 니 다.다른 프로 세 스 와 메모 리 를 공유 하려 면 메모리 맵 파일 을 사용 하거나 공유 데이터 세그먼트 를 설명 해 야 합 니 다.DLL 모듈 에 필요 한 스 택 메모 리 는 실행 프로 세 스 의 스 택 에서 분 배 됩 니 다.윈도 우 는 DLL 모듈 을 불 러 올 때 프로 세 스 함 수 를 DLL 파일 의 내 보 내기 함수 와 일치 하도록 호출 합 니 다.Windows 운영 체제 가 DLL 에 대한 작업 은 프로 세 스 가 필요 한 가상 주소 공간 에 DLL 을 비 추 는 것 일 뿐 입 니 다.DLL 함수 의 코드 가 만 든 모든 대상(변수 포함)은 스 레 드 나 프로 세 스 를 호출 합 니 다.호출 방식:1.정적 호출 방식:DLL 에 대한 로드 와 프로그램 이 끝 날 때 DLL 에서 마 운 트 해제 한 인 코딩 을 컴 파일 시스템 에서 수행 합 니 다.(다른 프로그램 이 이 DLL 을 사용 할 경우 윈도 우즈 는 DLL 에 대한 응용 기록 을 1 로 줄 이 고 모든 관련 프로그램 이 이 DLL 에 대한 사용 이 끝 날 때 까지 풀 어 줍 니 다.간단 하고 실 용적 이지 만 유연성 이 부족 하여 일반적인 요 구 를 만족 시 킬 수 있 습 니 다.암시 적 호출:동적 연결 라 이브 러 리 를 만 들 때 발생 하 는.LIB 파일 을 응용 프로그램의 프로젝트 에 추가 해 야 합 니 다.DLL 의 함 수 를 사용 하려 면 설명 만 하 십시오.암시 적 호출 은 LoadLibrary()와 FreeLibrary()를 호출 할 필요 가 없습니다.프로그래머 가 DLL 파일 을 만 들 때 링크 프로그램 은 이에 대응 하 는 LIB 가 져 오기 파일 을 자동 으로 생 성 합 니 다.이 파일 은 모든 DLL 내 보 내기 함수 의 기호 이름과 선택 할 수 있 는 표지 번 호 를 포함 하고 있 지만 실제 코드 는 포함 되 어 있 지 않 습 니 다.LIB 파일 은 DLL 의 대체 파일 로 프로그램 항목 에 컴 파일 되 었 습 니 다.프로그래머 가 정적 링크 를 통 해 프로그램 을 컴 파일 할 때 응용 프로그램의 호출 함 수 는 LIB 파일 에서 내 보 내 는 기호 와 일치 합 니 다.이 기호 나 표지 번 호 는 생 성 된 EXE 파일 에 들 어 갑 니 다.LIB 파일 에 도 해당 하 는 DL L 파일 이름(그러나 완전한 경로 이름 은 아 님)이 포함 되 어 있 으 며 링크 프로그램 은 이 를 EXE 파일 내부 에 저장 합 니 다.응용 프로그램 이 실행 되 는 과정 에서 DLL 파일 을 불 러 와 야 할 때 윈도 는 이러한 정보 에 따라 DLL 을 발견 하고 불 러 온 다음 기호 명 이나 표지 번 호 를 통 해 DLL 함수 에 대한 동적 링크 를 실현 한다.프로그램 에서 호출 된 모든 DLL 파일 은 프로그램 EXE 파일 을 불 러 올 때 메모리 에 불 러 옵 니 다.DLL 출력 함수 정 보 를 포함 하 는 입력 라 이브 러 리 파일(.LIB 파일)에 프로그램 을 연결 할 수 있 습 니 다.운영 체 제 는 실행 가능 한 프로그램 을 불 러 올 때 DLL 을 불 러 옵 니 다.실행 가능 한 프로그램 은 함수 명 을 통 해 DLL 의 출력 함 수 를 직접 호출 합 니 다.호출 방법 은 프로그램 내부 의 다른 함수 와 같 습 니 다.2.동적 호출 방식:프로그래머 가 API 함수 로 DLL 을 불 러 오고 마 운 트 해제 하여 DLL 을 호출 하 는 목적 을 달성 하 는 것 으로 사용 이 복잡 하지만 메모 리 를 더욱 효과적으로 사용 할 수 있 으 며 대형 응용 프로그램 을 작성 할 때 중요 한 방식 입 니 다.명시 적 호출:프로그램 에서 LoadLibrary 나 MFC 가 제공 하 는 AfxLoadLibrary 명시 적 으로 자신 이 만 든 동적 연결 라 이브 러 리 를 불 러 오 는 것 을 말 합 니 다.동적 연결 라 이브 러 리 의 파일 이름 은 위의 두 함수 의 매개 변수 이 고 GetProcAddress()로 도입 하고 자 하 는 함 수 를 가 져 옵 니 다.이로부터 이 프로그램 이 사용자 정의 한 함수 처럼 이 도입 함 수 를 호출 할 수 있 습 니 다.프로그램 이 종료 되 기 전에 FreeLibrary 나 MFC 가 제공 하 는 Afx FreeLibrary 로 동적 연결 라 이브 러 리 를 풀 어야 합 니 다.Win 32 의 LoadLibary 함 수 를 직접 호출 하고 DLL 경 로 를 매개 변수 로 지정 합 니 다.LoadLibary 는 HINSTANCE 인 자 를 되 돌려 줍 니 다.응용 프로그램 은 GetProcAddress 함 수 를 호출 할 때 이 인 자 를 사용 합 니 다.GetProcAddress 함 수 는 기호 명 이나 표지 번 호 를 DLL 내부 주소 로 변환 합 니 다.프로그래머 는 DLL 파일 을 언제 불 러 올 지,불 러 오지 않 을 지 결정 할 수 있 으 며,명시 적 링크 는 실행 할 때 어떤 DLL 파일 을 불 러 올 지 결정 할 수 있 습 니 다.DLL 을 사용 하 는 프로그램 은 사용 하기 전에 DLL 을 불 러 오기(LoadLibrary)하여 DLL 모듈 의 핸들 을 얻 은 다음 GetProcAddress 함 수 를 호출 하여 출력 함수 의 지침 을 받 아야 하 며,종료 하기 전에 DLL(FreeLibrary)을 마 운 트 해제 해 야 합 니 다.DLL 은 메모리 사용량 이 적 고 편집 이 용이 하 다 는 특징 이 있 기 때문에 많은 컴퓨터 바이러스 가 DLL 형식 파일 이다.단독으로 운행 할 수 없습니다.동적 링크 라 이브 러 리 는 일반적으로 직접 실행 할 수 없고 메 시 지 를 받 을 수 없습니다.실행 가능 한 프로그램 이나 다른 DLL 에서 호출 되 어 작업 을 수행 할 수 있 는 함 수 를 포함 하 는 독립 된 파일 입 니 다.다른 모듈 에서 동적 링크 라 이브 러 리 의 함 수 를 호출 할 때 만 역할 을 발휘 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: