본문 바로가기
VisualStudio.C++.C#

VC++ MFC Regular DLL 프로젝트 만들기. 예:CyFinAPI.dll

by i.got.it 2015. 12. 10.


 

개요

 

VC++ 에서 MFC Regular DLL 만드는 법.

사용된 IDE : Visual Studio 2015
DLL 프로젝트 명칭 : CyFinAPI
- Solution 명칭도 CyFinAPI 로 함.

과정요약.
1. Visual Studio 의 "새 프로젝트" (메뉴 :파일->새로만들기->프로젝트.. 클릭) 에서 MFC DLL 선택하고 프로젝트이름, 경로, 솔루션 이름 지정하고 확인버튼클릭.
2. 이후 DLL 마법사 설정선택하여 기본 DLL프로젝트 자동생성.
3. DLL 을 사용할 프로젝트에서 본 DLL 을  활용할때 필요한 헤더파일 생성해두기.
 
 


 

 

상세과정 . MFC Regular DLL 만들기.

 
 
1. 아래 그림에 Visual Studio 의 "새 프로젝트" (메뉴 :파일->새로만들기->프로젝트.. 클릭) 창이 보인다.

MFC DLL 선택하고 프로젝트이름, 경로, 솔루션 이름 지정하고 확인버튼클릭.


위 그림의 확인 버튼 클릭하면 MFC DLL 마법사 창이 보인다. 다음 클릭.




응용프로그램 설정 창이 나온다. 본 예에서는 아래 붉박 부분만 체크하고 마침 버튼 클릭한다.



자동으로 기본 코드까지는 만들어준다. - 아래 그림.

왼쪽의 솔루션 탐색기에 보면 .cpp, .h 리소스파알들이 생성된것을 볼 수 있다.




여기까지가 MFC Regular DLL 생성과정 기본.

이후 본인이 원하는  코드 작업 진행하면됨.


주의 사항 : .cpp 파일의 주석에 설명되어 있듯이 (위 그림 오른쪽의 붉은줄) DLL (프로젝트 옵션에서 MFC DLL 을 동적 링크하는것으로 옵션 설정한 경우)에서 외부로 노출시키는 함수의 첫부분에는 항상 아래 코드를 추가할것.

 AFX_MANAGE_STATE(AfxGetStaticModuleState());


 


 


 

DLL 을 활용할 곳에서 인클루드 시킬 헤더파일 생성.

 
DLL은 다른 프로그램에서  활용하기 위함이며 이를 위해서는 DLL 에서 노출해준 함수 등의 선언이 있는 헤더파일을 제공해줘야 한다.
DLL 활용하는 법 상세보기 -> http://igotit.tistory.com/471

이런 헤더파일은 프로젝트에 포함될 필요는 없지만, 관리의 편의상 프로젝트의 헤더파일에 포함시켜두고 바로 접근할 수 있도록 한다.

추가할 헤더파일명 : CyFinAPI_DEF.h ( 이름은 임의로 정하면 되나  DLL의 이름과 유사하게 해야 활용하는 측에서 혼선이 줄어든다.)

헤더파일 추가방법.
솔루션 탐색기의 헤더파일 을 마우스 우클릭하여 새항목.. 클릭한다.
 


 새항목 추가창에서 헤더파일 선택하고 이름에 CyFinAPI_DEF.h 기록하고 추가버튼 클릭.


 




 

DLL에 외부 노출함수 만들기

 

DLL 은 다른 앱 코드 개발시 활용가능한 함수, 리소스를 제공할 목적으로 만들어진 것이므로 export 시키는 방법을 알아야 한다.


DLL 에서 외부에 노출시킬 함수 정의 앞에 아래 구문을 추가하면 외부에 제공하는 함수로 설정된다.


extern "C" __declspec(dllexport)


즉, 함수정의 void test1(void), void test2(void) 이라는 함수가 있는데,  이 함수들을 외부에서 호출 가능하게 하려면 아래 붉박처럼 정의한다. 

외부노출함수정의하는 소스파일은 DLL 기본 생성된 CyFinAPI.c의 가장 아래 부분에 추가한다.





한편, 위와 같이 외부노출함수가 정의된 경우 DLL 활용하는 앱에서 인클루트 시킬 CyFinAPI_DEF.h 파일에 아래 처럼 선언해둔다.

 dllimport 임에 주의.



 


 

 

DLL 활용하는 앱 프로젝트에 필요한 3개 파일들.

 


앱개발시 DLL 을 활용 하기 위해서는  DLL 관련 3개의 파일(.DLL, .LIB, .h) 이 필요하다. ( implicit linking 시 요구되는 것이며 explicit linking 시에는 dll 파일만 있어도 된다. implicit link 방법 보기 -> http://igotit.tistory.com/471 )


본 프로젝트의 예에서는 아래 3개의 파일을 DLL 활용하려는 앱 프로젝트 폴더에 배치해야 한다.


 1. CyFinAPI.dll

 2. CyFinAPI.lib

 3. CyFinAPI_DEF.h

 

 


 

 본 글이 포함된 상위 정리 장소.

 

 Visual Studio/VC++/C/C# 활용정리 -> http://igotit.tistory.com/11

 

 
 





첫글등록 : 2015년 12월 10일.

최종수정 : 


본글단축주소 : https://igotit.tistory.com/476







댓글



 

비트코인




암호화폐       외환/나스닥/골드       암호화폐/외환/나스닥/골드 암호화폐/외환/나스닥/골드   암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)     롤오버 이자 없는 스왑프리계좌
( 스왑프리 암호화폐도 거래 가능 )    
MT4, MT5 , cTrader 모두 지원     FTMO 계좌 매매운용. MT4,MT5