DirectX 9.0 의 소개 DirectX SDK 의 사용법 C 또는 C++ 에 의한 DirectX 프로그래밍 DirectX 의 샘플 및 그 외의 DirectX 애플리케이션의 컴파일   [목차열람] [주소복사] [슬롯비우기]
DirectX 의 샘플 및 그 외의 DirectX 애플리케이션의 컴파일
 
Microsoft DirectX 9.0

DirectX 의 샘플 및 그 외의 DirectX 애플리케이션의 컴파일


여기에서는, Microsoft® DirectX® 애플리케이션의 컴파일시에 고려해야 할 점에 대해 설명한다. DirectX 9.0 에서는, Microsoft Visual C++® 6.0 이후만이 지원 된다.

컴파일의 준비

이 소프트웨어 개발 킷 (SDK)에 포함되어 있는 각 샘플에는, 샘플용의 소스 파일, 프로젝트 리소스, 링커등의 설정 정보를 기술한 Microsoft Visual Studio® 의 프로젝트 파일 (. dsp 파일)이 준비되어 있다. 그러나, 샘플을 확실히 컴파일 해, 링크하려면 , 샘플을 컴파일 하는 개발자가 약간 설정 작업을 실시하지 않으면 안 되는 경우도 있다. 또, 새로운 프로젝트를 생성 하기 위한(해), 그 프로젝트용의 설정 정보를 개발자가 스스로 준비해야 하는 경우도 있다. 여기에서는, DirectX 의 샘플에도, 개발자가 독자적으로 개발하는 DirectX 애플리케이션에도 해당하는 내용을 설명한다.

Visual Studio 로 프로젝트 파일을 연 후, 애플리케이션을 컴파일 하기 전에 몇개의 설정값을 체크해야 한다. 이러한 설정값은 Visual C++ 6.0 으로 Visual Studio . NET 의 어느 쪽을 사용할까에 따라서 다르다.

  이하의 설명에서는 디폴트의 인스톨 패스 (C:\DXSDK\Include 및 C:\DXSDK\Lib)를 사용해, 헤더 파일과 라이브러리 파일의 장소를 기술한다. 인스톨 패스는 다른 경우도 있다.

Visual Studio 6.0 을 사용하는 경우

인클루드 파일의 검색 패스

헤더 파일의 패스가 올바른 일, DirectX 의 헤더 파일의 디렉토리가 컴파일러에 최초로 검색되는 패스가 되어 있는 것을 확인하는 것. 인클루드 패스를 확인하려면 ,[툴] 메뉴의 [옵션] 을 클릭해,[디렉토리] 탭을 클릭한다. 이것에 의해, 다음과 같은 다이알로그 박스가 표시된다.

[옵션] 다이얼로그 박스

여기서 리스트의 선두에 표시되고 있는 패스가, 최신의 DirectX 의 헤더 파일을 두고 있는 폴더로 되지 않으면 안 된다. 이 디폴트 패스는, C:\DXSDK\Include 이다. 이 패스가 표시되지 않은 경우는, 그것을 리스트에 추가해,[디렉토리] 탭내의 툴바 컨트롤을 사용해 그 패스를 리스트의 선두에 이동하는 것.

링커의 검색 패스

링커가 링크 라이브러리를 검색할 때에 사용하는 검색 패스와 그 검색순서를 확인하는 것. 링크의 검색 패스의 리스트도,[디렉토리] 탭으로 확인할 수 있다. 이것을 실시하려면 ,[툴] 메뉴의 [옵션] 을 클릭해,[디렉토리] 탭을 클릭한다. 다이알로그 박스가 표시되면(자),[표시하는 디렉토리] 박스의 [라이브러리 파일] 을 클릭한다. 이것에 의해 표시된 리스트의 선두의 패스가, 최신의 DirectX 의 링크 라이브러리를 두고 있는 폴더로 되지 않으면 안 된다. 이 디폴트 패스는, C:\DXSDK\Lib 이다.

프로젝트의 링크 라이브러리

샘플과 함께 제공된 프로젝트 파일을 사용하는 경우는, 이 설정을 확인할 필요는 없다. 이 설정값은 프로젝트 파일내에서 지정되고 있다. 새로운 애플리케이션을 컴파일 하는 경우는,[프로젝트] 메뉴의 [설정] 을 클릭한다. 이것에 의해, 다음과 같은 다이알로그 박스가 표시된다.

[프로젝트의 설정] 다이얼로그 박스

애플리케이션이 적절한 표준 DirectX 링크 라이브러리에 링크되는 일도 확인해야 한다.

Visual Studio . NET 를 사용하는 경우

인클루드 파일의 검색 패스

헤더 파일의 패스가 올바른 일, DirectX 의 헤더 파일의 디렉토리가 컴파일러에 최초로 검색되는 패스가 되어 있는 것을 확인하는 것. 인클루드 패스를 확인하려면 ,[툴] 메뉴의 [옵션] 을 클릭해,[프로젝트] 폴더를 열어 [VC++ 디렉토리] 를 클릭한다. 다음의 윈도우가 표시된다.

[옵션] 다이얼로그 박스

여기서 리스트의 선두에 표시되고 있는 패스가, 최신의 DirectX 의 헤더 파일을 두고 있는 폴더로 되지 않으면 안 된다. 이 디폴트 패스는, C:\DXSDK\Include 이다. 이 패스가 표시되지 않은 경우는, 그것을 리스트에 추가해, 윈도우내의 상하 화살표 버튼을 사용해 그 패스를 검색 리스트의 선두에 이동하는 것.

링커의 검색 패스

링커가 링크 라이브러리를 검색할 때에 사용하는 검색 패스와 그 검색순서를 확인하는 것. 링크의 검색 패스의 리스트는 VC++ 디렉토리정보를 표시하는 윈도우에도 나타난다. [툴] 메뉴의 [옵션] 을 클릭해,[프로젝트] 폴더를 열어 [VC++ 디렉토리] 를 클릭한다. 윈도우가 표시되면(자),[표시하는 디렉토리] 박스의 [라이브러리 파일] 을 클릭한다. 이것에 의해 표시된 리스트의 선두의 패스가, 최신의 DirectX 의 링크 라이브러리를 두고 있는 폴더로 되지 않으면 안 된다. 이 디폴트 패스는, C:\DXSDK\Lib 이다.

프로젝트의 링크 라이브러리

샘플과 함께 제공된 프로젝트 파일을 사용하는 경우는, 이 설정을 확인할 필요는 없다. 이 설정값은 프로젝트 파일내에서 지정되고 있다. 새로운 애플리케이션을 컴파일 하는 경우는,[프로젝트] 메뉴의 [프로퍼티] 를 클릭한다. [링커] 폴더를 열어,[입력] 을 클릭한다. 이것에 의해, 다음과 같은 다이알로그 박스가 표시된다.

[프로젝트의 설정] 다이얼로그 박스

[추가하는 의존관계(dependencies)] 에 표시되는 라이브러리가 적절한 표준 DirectX 링크 라이브러리인 것을 확인하는 것.

구성 요소의 버전 정수

DirectX 의 이전의 버전과의 호환성을 보관 유지하기 위해(때문에), 몇개의 DirectX 구성 요소는 헤더 파일에 다양한 애플리케이션 프로그래밍 인터페이스 (API) 요소를 정의하고 있다. 보통, 영향을 받는 요소는, 버전 고유의 능력 구조체나 플래그 세트이다. 몇개의 헤더 파일 부분은, 프리프로세서가 불필요한 정의를 제외하는 프리프로세서 조건문으로 둘러싸여 있다. 정의가 끝난 정수의 값은, 구성 요소의 특정의 버전을 나타내고 있다. 값이 정의되지 않은 경우는, 헤더 파일을 기술할 경우에 사용된 DirectX 의 버전을 식별하는 값이 설정된다. Microsoft Direct3D® 의 헤더 파일 (D3D9.h)의 예를 다음에 나타낸다.

#ifndef DIRECT3D_VERSION
#define DIRECT3D_VERSION         0x0900
#endif  //DIRECT3D_VERSION

이러한 정수에 다른 값을 정의 하면, 낡은 버전의 구성 요소로 새로운 버전의 헤더 파일을 사용할 수 있다. 예를 들어, DirectX 7.0 버전의 Direct3D 의 컴파일에 최신의 헤더 파일을 사용하려면 , DIRECT3D_VERSION 에 0x0700 를 정의한다.

GUID 와의 링크

Direct3D 는 글로벌 일의 식별자 (GUID)를 사용해 인터페이스의 부분을 식별한다. IUnknown::QueryInterface 메서드를 사용해 개체가 인터페이스를 지원 하고 있을지 어떨지를 판정하는 경우, 그 GUID 를 사용해 목적의 인터페이스를 식별한다.

DirectX 9.0 애플리케이션으로 GUID 를 사용하려면 , Dxguid.lib 라이브러리에의 링크를 포함해 헤더 파일 및 소스 파일로부터 "#define INITGUID" 를 삭제한다. 이것은, 이전의 버전으로부터의 변경점이며, 이전에는 다른 모든 include 및 define 스테이트먼트보다 먼저 INITGUID 를 정의해, GUID 를 링크하고 있었다. 이전의 버전에서는, INITGUID 는 소스 모듈의 1 개인 만큼 정의할 필요가 있었다.

애플리케이션이 C 또는 C++ 의 어디에서 기술되고 있을까에 의해, GUID 의 사용법이 다르다. C 에서는, GUID (예를 들어 IID_IDirect3D)에 포인터를 건네주지만, C++ 에서는 GUID (IID_IDirect3D)에 참조를 건네준다.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP