VS C/C++로 작성할 수 있는 대표적인 프로그램 실행 파일인 어플리케이션(.exe), 정적 라이브러리(.lib), 동적 라이브러리(.dll) 을 생성하기 위한 새 프로젝트를 작성하는 방법을 소개합니다.
새 프로젝트 작성하기
c 또는 c++프로그램을 작성하기 위한 새 프로젝트를 작성합니다. 다음과 같이 [파일] – [추가] – [새 프로젝트(N)]을 눌러 [새 프로젝트 추가] 화면을 표시합니다.
다음과 같이 새 프로젝트 추가 화면에서 DLL(동적 연결 라이브러리) 템플릿, 정적 라이브러리 템플릿 , 빈 프로젝트 템플릿, 콘솔 앱 중 하나를 선택 할 수 있습니다. [다음(N)] 버튼을 누르면 새 프로젝트 구성 화면으로 진행합니다.
- 어플리케이션(.exe) 작성은 빈 프로젝트 템플릿 또는 콘솔 앱 템플릿을 선택
- 정적 라이브러리(.lib) 작성은 정적 라이브러리 템플릿을 선택
- 동적 라이브러리(.dll) 작성은 DLL(동적 연결 라이브러리) 템플릿을 선택
다음과 같이 [새 프로젝트 구성] 화면에서 프로젝트 이름과 위치를 지정하고 [만들기(C)] 버튼을 눌러 새 프로젝트를 작성합니다. 빈 솔루션 작성부터 새 프로젝트 작성까지의 상세한 설명은 [(VS C/C++)Windows에서 c/c++ 프로그램 개발 환경 만들기(처음설치)]를 참조 하십시오.
위 화면의 프로젝트 이름으로 지정된 testprj는 예시입니다. 예시 대신 다음과 같은 템플릿과 프로젝트 이름으로 새 프로젝트를 작성합니다.
- 빈 프로젝트 템플릿을 선택하여 myexe1 프로젝트 이름으로 작성
- 콘솔 앱 템플릿을 선택하여 myexe2 프로젝트 이름으로 작성
- 정적 라이브러리 템플릿을 선택하여 mylib 프로젝트 이름으로 작성
- DLL(동적 연결 라이브러리) 템플릿을 선택하여 mydll 프로젝트 이름으로 작성
새 프로젝트 추가로 작성된 초기 상태는 다음과 같습니다. 빈 프로젝트 템플릿으로 만든 프로젝트 myexe1에만 디폴트로 추가되는 c/c++소스 코드가 존재하지 않습니다.
빈 프로젝트 템플릿(myexe1 프로젝트)
빈 프로젝트 템플릿으로 작성된 프로젝트는 c/c++샘플 파일이 기본으로 추가되어 있지 않습니다. 컴파일 할 대상이 없으므로 다음과 같이 왼쪽 영역의 구성 속성에는 링크를 위한 링커 속성 메뉴는 존재하지만 컴파일을 위한 c/c++ 속성 메뉴가 존재하지 않음을 확인할 수 있습니다.
참고로 c/c++ 파일을 추가하면 콘솔 앱 템플릿으로 만든 프로젝트와 같이 c/c++ 속성 메뉴가 표시됩니다.
또한 다음과 같이 구성 형식의 드롭다운 리스트를 표시해 정적 라이브러리(.lib) 또는 동적 라이브러리(.dll) 프로젝트로 변경할 수 있습니다.
콘솔 앱 템플릿(myexe2 프로젝트)
콘솔 앱 템플릿으로 작성된 프로젝트는 c/c++샘플 파일이 기본으로 추가되어 있습니다. 컴파일 할 대상이 존재하므로 다음과 같이 왼쪽 영역의 구성 속성에서 컴파일을 위한 c/c++ 속성 메뉴와 링크를 위한 링커 속성 메뉴를 확인할 수 있습니다.
정적 라이브러리 템플릿(mylib 프로젝트)
정적 라이브러리 템플릿으로 작성된 프로젝트는 c/c++샘플 파일이 기본으로 추가되어 있습니다. 컴파일 할 대상이 존재하므로 다음과 같이 왼쪽 영역의 구성 속성에는 컴파일을 위한 c/c++ 속성 메뉴가 존재합니다. 그리고 컴파일로 생성된 (.obj)파일들을 라이브러리화 하기위한 라이브러리 관리자 속성 메뉴 또한 확인할 수 있습니다.
정적 라이브러리(.lib) 파일은 함수의 집합을 빌드(컴파일 + 라이브러리)하여 만든 바이너리 파일입니다. 다른 프로젝트에서 참조되어 빌드(컴파일 + 링크)로 실행 파일이 만들어질 때 소스코드가 아닌 바이너리로 제공하기 위해 만듭니다.
DLL(동적 연결 라이브러리) 템플릿(mydll 프로젝트)
DLL(동적 연결 라이브러리) 템플릿으로 작성된 프로젝트는 c/c++샘플 파일이 기본으로 추가 되어 있습니다. 컴파일 할 대상이 존재하므로 다음과 같이 왼쪽 영역의 구성 속성에서 컴파일을 위한 c/c++ 속성 메뉴와 링크를 위한 링커 속성 메뉴를 확인할 수 있습니다.
동적 라이브러리(.dll) 파일은 함수의 집합을 빌드(컴파일 + 링크)하여 만든 파일입니다. 단독으로는 실행 할 수 없지만 다른 어플리케이션(.exe)에서 호출될 때 메모리에 로드되어 실행됩니다.