2017-11-30 27 views
0

안녕하세요 사실이 튜토리얼과 다이렉트 X 11을 학습 : http://www.rastertek.com/dx11tut03.html다이렉트 X 11 및 g ++ 컴파일 오류

첫 번째 부분

내 코드합니다 (probleme에서 온) : d3dclass.h :

//Linking 
#pragma comment(lib, "dxgi.lib") 
#pragma comment(lib, "d3d11.lib") 
#pragma comment(lib, "d3dx11.lib") 
#pragma comment(lib, "d3dx10.lib") 

//Include 
#include <dxgi.h> 
#include <d3dcommon.h> 
#include <d3d11.h> 
#include <d3dx10math.h> 

나는 모두 튜토리얼을 좋아한다. 유일한 차이점은 g ++, trough와 함께 컴파일하는 것이다.

g ++ -mwindows WinMain.cpp systemclass.cpp inputclass.cpp graphicsclass.cpp d3dclass.cpp -o Prog.exe -I "D : \ Program File \ DirectX SDK \ Include"2 log.txt

출력 파일, 나는 많은 오류가있다. 이것은 log.txt에 있습니다 :

https://drive.google.com/open?id=1XUlcAFUyRcLIvdKbe0FkLVjkvwxpOmEv

가 dxgi.h에 선언되지 않은 __in 같은 것들의 많은이 로그를 요약하면,하지만이 헤더는 DirectX11 라이브러리에서이다;

두 번째 부분

내가이 추가로 (첫 번째 부분의) 내 문제를 많이 해결하는 방법을 발견 :

#define __in 
#define __out 
#define __inout 
#define __in_bcount(x) 
#define __out_bcount(x) 
#define __in_ecount(x) 
#define __out_ecount(x) 
#define __in_ecount_opt(x) 
#define __out_ecount_opt(x) 
#define __in_bcount_opt(x) 
#define __out_bcount_opt(x) 
#define __in_opt 
#define __inout_opt 
#define __out_opt 
#define __out_ecount_part_opt(x,y) 
#define __deref_out 
#define __deref_out_opt 
#define __RPC__deref_out 

을하지만 여전히 큰 문제가,이다 오류 출력은 :

D:\Programme File\DirectX SDK\Include/d3dx10core.h:345:13: error: expected ';' at end of member declaration 
    HRESULT WINAPI_INLINE GetDesc(D3DX10_FONT_DESCA *pDesc) { return GetDescA(pDesc); } 

는 WINAPI_INLINE (이것은 다이렉트 헤더에)

012,351,641에서 온다

어떻게 해결할 수 있습니까? 부디.

+0

범위를 좁히고 [최소, 완료 및 확인 가능] (https://stackoverflow.com/help/mcve) 예제를 제공하십시오. 코드에 링크하지 말고 코드를 게시하십시오. – Ron

+0

나는 120,000자를 만드는 log.text를 게시 할 수 없으며 사이트에서 게시를 허용하지 않습니다. 그러나 문제가 포함에서 온다 (나는 그것을 및 오류 로그가 동일 테스트) : //이 사용법 #include 사용법 #include 사용법 #include 사용법 #include Carl

+0

@Carl 당신이 돈을 포함 이 작업을 수행 할 필요가 없으며 아무도 120,000자를 읽을 수 없습니다. – Ivan

답변

1

g ++ 사용에 대한 경험이 없지만 여기에서 몇 가지 세부 정보를 제공해 드리겠습니다. g ++을 사용하려면 install the Windows SDK이 필요하고 적절한 경로를 포함하도록 구성하십시오. 레거시 DirectX SDK에는 Windows SDK가 필요하며 완전히 독립 실행 형이 아닙니다.

Note that the legacy DirectX SDK and the Windows SDK don't claim to be compatible with the GCC toolchain.

__in, __out 등 매크로는 "SAL 주석"라고하고이 내부적으로 마이크로 소프트의 정적 코드 분석의 질을 향상 및 Visual C++의 /analyze 스위치를 사용하면 할 수 있습니다합니다. 다른 경우에는 '공백'으로 정의되므로 코드에서 제거됩니다. 매크로는 Windows SDK에 정의되어 있습니다. dxgi.h 버전을 포함하기 전에 #include <sal.h> 및/또는 #include <specstrings.h>을 명시 적으로 시도 할 수 있습니다.

기존의 DirectX SDK 자체는 , D3DX10D3DX1 유틸리티 라이브러리와 함께 deprecated입니다. 따라서 Windows 8.0, 8.1 또는 10 SDK를 사용하는 경우 Direct3D 11을 전혀 사용하지 않고 코딩 할 수 있습니다 (Living without D3DX 참조). 다소 오래된 데이트 된 rastertek 튜토리얼에서 가정 한 이전 헬퍼를 계속 사용하려면 DirectX SDK 포함 및 lib 경로를 검색해야합니다. 이후 Windows SDK에 포함/lib 경로.

If you were using Visual C++ (which BTW has a free Community edition available), then you'd probably be having an easier time. You might also want to see the DirectX Tool Kit tutorials .

+0

나는 그것을 내일 시험 할 것이다. 하지만 당신이 좋은 사이트 나 PDF 또는 책을 알고 있다면 (심지어 내가 필요로하는 경우에도) 아주 완벽하고 (rastertek 튜토리얼처럼) 덜 쓸모없고 DirectX12에있을 것입니다. 그것이 좋은지 알고 : https://www.amazon.com/Introduction-Programming-DirectX-Computer-Science/dp/1942270062) – Carl

+0

[this post] (https://blogs.msdn.microsoft.com/chuckw)를 참조하십시오./2014/04/07/book-recommendations /) 및 [this one] (https://blogs.msdn.microsoft.com/chuckw/2016/09/15/getting-started-with-direct3d-12/) –

+0

안녕하세요, 저는 이제 이것을 어디에서 찾을 수 있는지 모르겠습니다. vcruntime.h. 내 출력 로그에이 오류가 있습니다 : 오류 : vcruntime.h : 해당 파일이나 디렉터리가 없습니다. (단지 정보를 위해, 나는 다른 프로그램을 통해 C++ 코드를 컴파일 할 수 있기 때문에 g ++을 사용하지만, Visual Studio Project File을 컴파일하여 다른 프로그램에서 컴파일하는 방법을 알고 있다면) – Carl