윈도우즈 코어 프로그래밍 - DLL 기본
윈도우즈 코어 프로그래밍 - DLL 기본
Windows API의 모든 함수는 D L L에 포함됩니다.
K e r n e l 3 2 . dl l, 메모리, 프로세스, 루틴을 관리하는 데 사용되는 함수를 포함한다.
U s e r 3 2 . dl l은 사용자 인터페이스 작업(예를 들어 창의 생성과 메시지 전송)을 수행하는 데 사용되는 함수를 포함한다.
G D I 3 2 . 그림 그리기와 텍스트를 표시하는 데 사용되는 함수를 포함하는 l l l.
A d v A P I 3 2 . dll은 대상의 안전성, 등록표 조작과 이벤트 기록을 실현하는 함수를 포함한다.
C o m D l g 3 2 . d l l에는 일반 대화상자(예: File Open 및 File Save)가 포함됩니다.
C o m C t l 3 2 . D L L은 일반적인 모든 창 컨트롤을 지원합니다.
DLL 사용의 이점:
• 애플리케이션의 특성을 확장합니다.DL L은 프로세스의 주소 공간을 동적으로 불러올 수 있기 때문에 프로그램은 실행할 때 어떤 조작을 해야 하는지 확인한 다음에 해당하는 코드를 불러와서 필요에 따라 실행할 수 있다.예를 들어 한 회사가 다른 회사가 제품의 기능을 개선하거나 강화하도록 제품을 개발했을 때 D L L을 사용할 수 있다.
• 여러 프로그래밍 언어로 작성할 수 있습니다.가지고 있는 가장 좋은 언어를 선택하여 D L L을 작성할 수 있습니다.아마도 응용 프로그램의 사용자 인터페이스는 Microsoft Visual Basic을 사용하여 가장 잘 작성되었을 것입니다. 그러나 C++로 비즈니스 논리를 처리하는 것이 좋습니다.Visual Basic 프로그램에서 C++ DLL, Cobol DLL 및 Fortran DLL 등을 로드할 수 있습니다.
• 소프트웨어 프로젝트 관리를 단순화합니다.만약에 소프트웨어 개발 과정에서 서로 다른 작업팀이 서로 다른 모듈에서 일한다면 이 프로젝트는 관리하기가 비교적 쉽다.그러나 응용 프로그램이 판매할 때 첨부된 파일은 가능한 한 적게 해야 한다.나는 한 회사가 판매하는 제품에 120개의 DL L이 딸려 있다는 것을 알고 있다. 프로그래머당 최대 5개의 DL L이 딸려 있다.이렇게 하면 프로그램이 100개의 디스크 파일을 열어야 프로그램이 작동할 수 있기 때문에 프로그램의 초기화 시간이 무섭게 길어질 것이다.
• 메모리를 절약할 수 있습니다.만약 두 개 이상의 응용 프로그램이 같은 D L L을 사용한다면, 이 D L L의 페이지는 R A M을 한 번만 넣으면 모든 응용 프로그램이 그 페이지를 공유할 수 있다.C/C + 런타임 라이브러리가 좋은 예입니다.많은 응용 프로그램들이 이 라이브러리를 사용한다.만약 모든 응용 프로그램이 이 정적 라이브러리에 연결된다면, sp r i n t f, st r c p y, m a l l o c 등 함수의 코드는 메모리에 여러 번 존재해야 한다.단, 이 모든 응용 프로그램이 DLL C/C++ 실행 라이브러리에 연결되면, 이 함수의 코드는 메모리에 한 번만 넣을 수 있으며, 이것은 메모리의 사용이 더욱 효과적임을 의미한다.
• 리소스 공유에 도움이 됩니다.D L L에는 대화 상자 템플릿, 문자열, 아이콘 및 비트맵 등의 리소스가 포함될 수 있습니다.여러 응용 프로그램에서 이러한 리소스를 공유하는 데 D L L을 사용할 수 있습니다.
• 애플리케이션을 로컬화하는 데 도움이 됩니다.응용 프로그램은 항상 D L L을 사용하여 자신을 현지화합니다.예를 들어, 사용자 인터페이스 구성 요소가 아닌 코드만 포함된 응용 프로그램은 지역화된 사용자 인터페이스 구성 요소를 포함하는 D L L을 로드할 수 있습니다.
• 플랫폼 차이를 해결하는 데 도움이 됩니다.Wi d n o w s 버전마다 함수가 다릅니다.개발자들은 항상 새로운 함수를 호출하려고 한다(호스트의 Wi n d o w s 버전에 존재한다면).그러나 소스 코드에 새 함수에 대한 호출이 포함되어 있고 응용 프로그램이 이 함수를 제공하지 않는 Wi n d o w s 버전에서 실행될 경우 운영 체제의 로더가 프로세스를 실행하지 못하게 됩니다.설령 네가 실제로 이 함수를 호출한 적이 없다 하더라도 상황은 이렇다.새 함수를 D L L에 저장하면 응용 프로그램에서 Wi n d o w s의 이전 버전에 로드할 수 있습니다.물론, 너는 여전히 이 함수를 성공적으로 호출할 수 있다.
• 일부 특수한 목적에 사용할 수 있다.Wi n d o w s 를 사용하면 일부 특성은 D L L에만 사용할 수 있습니다.예를 들어, D L L에 연결 알림 함수가 포함된 경우에만 일부 연결을 설치할 수 있습니다(S e t Wi n d o w s H o k E x와 S e Wi n E v e n t H o k를 사용하여 설치).Windows Explorer의 셸을 확장하려면 D L 에서 CO M 객체를 만들어야 합니다.We b 브라우저에서 로드할 수 있는 풍부한 내용의 We b 페이지를 만드는 데 사용되는 A c t i v e X 컨트롤도 마찬가지입니다.DLL의 디스플레이 및 암시적 사용 방법에 대한 몇 가지 경험: 일반적으로 extern "C"declspec(dllexport)은 변수, 함수 등을 내보냅니다. 일반적으로 클래스를 내보내지 않습니다. 다른 호환성을 위해서...
e x t e r n "C"는 c++ + 로 컴파일하여 c 호환성을 보장합니다. 즉, 함수 이름이 수정되지 않도록 합니다.다른 컴파일러 공급업체의 도구와 연결된 Mi c r o s o f t 도구를 사용하여 실행 가능한 모듈을 만들려면 Mi c r o s o f t의 컴파일러 출력에 변경되지 않은 함수 이름을 알려야 합니다.두 가지 방법으로 이 조작을 진행할 수 있다.첫 번째 방법은 프로그래밍 프로젝트를 위한 것이다.d e f 파일 및.d e f 파일에는 다음과 같은 E X P O RT S 섹션이 추가됩니다.
EXPORTS
MyFunc
사용을 피하고 싶다면.d e f 파일, 절단되지 않은 함수 버전을 두 번째 방법으로 출력할 수 있습니다.D L L의 소스 코드 모듈에서 다음 행 코드를 추가할 수 있습니다.
#pragma comment(linker, "/export:MyFunc=_MyFunc@8")
(MyFunc wei 함수 이름)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.