c++ dll 예제

예를 들어 창에서 Kernel32.dll 파일은 메모리 관리, 입력/출력 작업 및 인터럽트를 처리합니다. DLL 또는 동적 링크 라이브러리를 하나의 파일로 함께 압축된 코드, 데이터 또는 리소스의 모음으로 간단히 생각할 수 있습니다. DLL은 코드를 배포하고 재사용할 수 있는 좋은 방법입니다. 예를 들어 각 응용 프로그램에서 동일한 작업을 코딩하는 대신 추가, 빼기, 곱셈 및 나누기와 같은 산술 연산을 사용하는 두 개의 응용 프로그램이 있는 경우 이러한 작업을 DLL(예: Math.dll) 내에 넣을 수 있습니다. 두 응용 프로그램에서 DLL을 참조합니다. 이러한 방식으로 수학 연산을 한 번만 코딩하는 반면 두 응용 프로그램 또는 향후 응용 프로그램은 산술 연산에 동일한 Math.dll을 사용할 수 있습니다. Dlls가 코드에서 로드되기 때문에 대신 정적 라이브러리를 사용하는 것 같아요(예 : Win32에서는 LoadLibrary()를 사용해야 합니다. 진입점 함수는 간단한 초기화 작업만 수행해야 하며 다른 DLL 로드 또는 종료 함수를 호출해서는 안 됩니다. 예를 들어 진입점 함수에서 LoadLibrary 함수 또는 LoadLibraryEx 함수를 직접 또는 간접적으로 호출해서는 안 됩니다. 또한 프로세스가 종료될 때 FreeLibrary 함수를 호출해서는 안 됩니다.

마법사가 완료되면 최소한의 콘솔 응용 프로그램 프로젝트가 만들어집니다. 주 소스 파일의 이름은 이전에 입력한 프로젝트 이름과 같습니다. 이 예제에서는 MathClient.cpp라는 이름이 붙여진 것입니다. 빌드할 수 있지만 아직 DLL을 사용하지 않습니다. 다음 코드는 Win32 동적 링크 라이브러리 프로젝트 유형을 사용하여 Visual C++에서 만든 DLL의 예입니다. 파일 맨 위에 있는 전처리기 문을 확인합니다. 기본적으로 DLL에 대한 새 프로젝트 템플릿은 DLL 프로젝트에 대해 정의된 전처리기 매크로에 PROJECTNAME_EXPORTS를 추가합니다. 이 예제에서 Visual Studio는 MathLIBRARY DLL 프로젝트를 빌드할 때 MATHLIBRARY_EXPORTS를 정의합니다.

다음 예제는 내보낼 수 있는 클래스를 정의합니다. 모든 멤버 함수 와 정적 데이터가 내보내집니다: 모듈 정의 파일을 사용하여 내보낸 DLL 함수를 선언할 수도 있습니다. 모듈 정의 파일을 사용하는 경우 내보낸 DLL 함수에 함수 키워드를 추가할 필요가 없습니다. 모듈 정의 파일에서 라이브러리 문 및 DLL에 대 한 내보내기 문을 선언 합니다. 다음 코드는 정의 파일의 예입니다. 다음 코드는 SampleDLL DLL에서 내보낸 DLL 함수를 호출하는 Win32 응용 프로그램 프로젝트의 예입니다.