개요 |
|
Visual Studio 2015 MFC extension dll 만들기.
본 글에서 예로 사용되는 "확장DLL 프로젝트" 이름 : ChartDirectorViewer
기능 : Chart Director for C++( http://igotit.tistory.com/553 ) 에서 제공하는 2개의 소스 파일 ChartViewer.cpp, ChartViewer.h 을 확장 DLL ChartDirViewer 로 만들어서 응용프로그램에서 활용시 소스코드(ChartViewer.cpp, ChartViewer.h) 포함하지 않고 ChartDirectorViewer.dll 을 로딩하여 활용가능하게 함.
MS 제공정보 : MFC extension dll
|
|
상세. MFC Extension DLL 만들기. |
|
단계1. 확장DLL 프로젝트 ChartDirectorViewer 생성.
Visual Studio 실행하여 File -> New -> Project.., 클릭하여
왼쪽 Template -> Visual C++ -> MFC 선택하고 오른쪽 MFC DLL 선택하고 프로젝트명 기록하고 버튼 OK클릭.
진행중 나오는 아래 창 에서 MFC extension DLL 선택. 상기 대화상자의 버튼 Finish 클릭하면 확장DLL 기본 소스코드 자동 생성된다. 아래화면. 단계2. 프로젝트에 소스코드 ChartViewer.cpp, ChartViewer.h 추가.
http://igotit.tistory.com/553 의 2번 박스글에서의 설명과 동일함. 프로젝트에 포함시키면 아래 그림 오른쪽 처럼 클래스 들이 추가된것이 보인다.
단계3. 외부노출 클래스 설정.
상기 클래스 중에서 CChartViewer 를 노출시키기 위해선 해당 Class 선언부에 AFX_EXT_CLASS 추가 하면된다. 즉, 아래 그림 붉은 박스처럼 구문 추가한다. 이제 본 DLL 이용하면 다른 응용프로그램에서 클래스 CChartViewer 사용가능 상태 된 것.
단계4. 빌드 프로젝트 빌드하면 확장DLL ChartDirectorViewer 만들기 끝.
빌드 성공시 출력폴더에 dll 과 lib 파일이 만들어진 것을 볼 수 있다.
|
|
다듬기. DLL 배포용 헤더파일 ChartDirectorViewer.h 추가. |
|
상기 박스글에서 처럼 만들어진 DLL 을 다른 응용프로그램에서 사용하기 위해서는 외부 노출 클래스 선언되어있는 헤더 파일인 chartviewer.h 를 배포해야하는데, 통상 사용자들은 이런걸 헷갈려 한다. 즉, DLL 이름이 ChartDirectorViewer 이면 헤더파일도 ChartDirectorViewer 라는 이름이 헤더파일에 포함되어있길 기대한다.
또한, chartviewer.h 에는 사용자에게 불필요한 선언들도 있어 지저분하기도 하다.
따라서, 우리의 프로젝트에서 ChartDirectorViewer.h 를 수동 추가하고 , 원래 chartviewer.h 에 있던 외부 노출 클래스 선언구문을 ChartDirectorViewer.h 에서 이뤄지게 한다.
이제, DLL 배포시 아래 3개 파일이 배포되면 된다.
1. ChartDirectorViewer.dll
2. ChartDirectorViewer.lib
3. ChartDirectorViewer.h
|
|
MFC 확장 DLL 기본 지식
- 여러 DLL 들의 리소스 충돌 문제 해결 방법등
첫 등록 : 2017.03.18
최종 수정 : 2024.09.05
단축 주소 : https://igotit.tistory.com/1259
'VisualStudio.C++.C#' 카테고리의 다른 글
MFC. CPropertySheet, CPropertyPage (0) | 2017.06.14 |
---|---|
Visual C++. Target Platform Version 설정. - windows sdk. (0) | 2017.04.15 |
Visual Studio Community 2017. 무료. (0) | 2017.03.14 |
VC++, DLL 활용하는법.- explicit linking (명시적 연결방식) (0) | 2017.03.13 |
Visual Studio 2015 빈 솔루션 생성. (0) | 2017.03.12 |
댓글