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

Visual C++ 64bit, 32bit 프로젝트 개발 환경 셋팅.

by i.got.it 2020. 9. 14.

 

개요

 

 Visual C++ 프로젝트에서 만들어지는 실행파일을 32bit/ 64bit 모두 가능하게 하기위한 프로젝트 환경 설정법.

 

 

기본 사전 지식. 

1. 32비트용/ 64비트용 프로젝트를 따로 만들 필요 없고 1개의 프로젝트에서 플랫폼을 32비트 혹은 64비트 선택하여 컴파일 함.

2. Visual C++ 2015, 2017, 2019 에서 프로젝트 생성하면 기본 64비트/32비트 플랫폼 선택가능하게 되어있으나,  Visual C++ 2010 에서는 64비트 플랫폼 선택가능하게 사용자가 설정해줘야 함. 방법 보기 -> http://igotit.tistory.com/147

3. Visual C++ 컴파일과정에서 윈도우 , MFC 라이브러리들은 자동으로 선택된 플랫폼에 해당하는것이 임포팅되어 컴파일되므로 사용자가 별도 설정할것 없음.

 

본 글에서 정리되는 내용 요약.

-  1개의 프로젝트에서 32비트/ 64비트 선택적으로 컴파일 하는 경우, 아래 사항들은 개발자가 직접 셋팅 해둬야 한다.

1. 프로젝트에서 윈도우 기본 라이브러리 외에 추가 사용되는 라이브러리 파일들 플랫폼별로 폴더 별도 할당하고 해당 파일들 분리 모아두기.

2. 프로젝트의 출력파일 생성폴더 32/64 별로 분리 출력되도록 설정하기.

3. 프로젝트의 플랫폼 설정에 맞게 상기 1의 라이브러리 임포팅하는 구문 추가하기.

 

본 설명에서 사용되는 Visual C++ 버전 : 2015

 

 

 

 

 

 

상세.

 

 

1. 플랫폼별 라이브러리 보관폴더.  LIB_32bit, LIB_64bit

 

프로젝트 소스 경로에 LIB_32bit, LIB_64bit 폴더 만들고,

프로젝트에서 사용되는 추가 라이브러리 (기본 윈도우 라이브러외의 것들을 의미함) 관련 파일들을 플랫폼별로 별도 저장해둔다.

본 파일들은 프로젝트에서 플랫폼 선택된 것이 대응하는 라이브러리  파일들을 프로젝트에서 임포팅하게 된다.

탐색기에서 프로젝트 소스 폴더에 보면 아래 파박의 폴더이다.

 

 

 

2. 프로젝트 출력파일 생성폴더 플랫폼별로 분리 출력되게 하기.

프로젝트의 속성 설정(아래 그림)에서 플랫폼을 WIn32 (32비트 의미함) 선택된 상태에서 출력 디렉터리 경로에 붉은 선 처럼 Release32bit 로 수정한다. - 기본 기록되어있는 값은 환경변수로 $(Configuration) 으로 되어있으며 Release 폴더에 출력하는 설정인데 우리의 경우는 플랫폼별로 분리되어 출력을 원하므로 32비트 출력은 Release32bit 폴더로 하겠다는 설정임. 또한 중간디렉터리는 Intermediate32bit 로 분리 기록한다.

 


 

위 설정창의 상태에서 이번엔 플랫폼을 x64 (64비트 의미함) 을 선택하고 출력 디렉터리에  Release64bit, 중간디렉터리를  Intermediate64bit 로 수정한다. (아래그림)

 


 

위와 같이 설정하고, 각각의 플랫폼에서 빌드 하면 아래 주황색 처럼 우리의 프로젝트 소스 폴더에 해당 폴더 만들어지고 이 폴더속에 32비트, 64비트 용 출력파일들이 분리되어 생성된다.

 

 


 2020년 9월 14일 추가. 

 앞의 방식보다 더 간단하고 지속가능 일관된 관리 가능한 설정방법. 


 아래 그림 : debug, release 선택하지 말고 All configurations, All platform 선택하고, 

 붉은 박스처럼 Output, Intermediate 디렉터리 설정. 


 

Output_$(platform)\$(Configuration)\


Intermediate_$(platform)\$(Configuration)\




 


위와 같이 설정하면 디버그, 릴리즈, x64, Win32 조합선택에 따라 아래 탐색기 폴더 구성으로 파일들이 배치된다. 







3. 프로젝트에서 선택된 플랫폼에 맞게 라이브러리 임포팅 구문 추가.

앞의 1의 과정에서 프로젝트에서 사용하는 라이브러리들을 플랫폼별로 분리 저장해뒀고, 우리의 프로젝트 빌드시 선택된 플랫폼에 일치하는 폴더속의 라이브러리들이 임포팅가능하게 처리되어야 한다. 이를 위한 설정법.

 

프로젝트 속성창에서 아래 처럼 플랫폼 Win32 인 경우 전처리기 정의에 My32bit 를 타이핑해서 추가하고, 동시에 플랫폼 x64 선택하고 My64bit 타이핑해서 추가한다.

 

 

위와 같이 전처리기를 추가해두면, 우리의 코드에서 각 선택된 플랫폼별로 분리된 처리가 가능해지며 아래 사용예를 보인다.

즉, 아래 파박 에서 x64를 선택하면 우리가 앞에서 등록한 My64bit 인 구문이 활성화 된 상황이고 LIB_64bit 폴더에서 64비트 라이브러리 추가되고, 파박에서 x86 (32비트 의미함) 선택하면 #if My32bit == 1  구문이 선택되어 활성화 되어 플랫폼별 분리된 처리 가능하다.

 

 

 

 

상기와 같이 설정해두면 32비트 / 64비트용 모두 생성가능한 간결한 개발환경 구축완료된다.

 

 

 



상기 전체과정 동영상. 

- 상황예 : Visual C++ 2019 에서 프로젝트 CyFinAPI( 형식 MFC Regular DLL) 의 32bit, 64bit 동시 개발환경 셋팅.




- 상황예 : Visual C++ 2019 에서 프로젝트 CyFinAPI_Launcher( 형식 MFC Dialog based app.) 의 32bit, 64bit 동시 개발환경 셋팅.

- MFC 대화상자프로젝트든 MFC Regular DLL 이든 설정방법은 완전히 동일함. 






연관.


1. 프로젝트 속성창에서 사용가능한 전체 매크로 보기 -> http://igotit.tistory.com/1356

 


 

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

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

 

 



첫등록 : 2016년 4월 9일 

최종수정 : 2020년 0월 14일.


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




 

댓글



 

비트코인




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