2017-11-30 35 views
0

こんにちは、私は実際にこのチュートリアルではDirectX 11を学習:http://www.rastertek.com/dx11tut03.htmlのDirectX 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 Files¥DirectX SDK¥インクルード" 2> log.txt

出力ファイル、私は大きな誤差を持っています。これはlog.txtという次のとおりです。

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

dxgi.hで宣言されたが、このヘッダはDirectX11ライブラリからですされていない__inのようなものがたくさんあるログを要約します。

セカンドパート

私はこれを追加すると(最初の部分の)私の問題の多くを解決する方法を見つけた:

#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から来る(これはDirectXのヘッダにある)

どうすればこの問題を解決できますか?お願いします。

+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注釈」と呼ばれ、彼らはそこに両方の​​内部でMicrosoftの静的コード解析の質を改善し、Visual C++の/analyzeスイッチを使用するときになっているされています。他のケースでは「空白」と定義されているため、コードから削除されます。マクロは、Windows SDKで定義されています。 のバージョンを含める前に、#include <sal.h>および/または#include <specstrings.h>を明示的に実行してみることができます。

従来のDirectX SDK自体は、,D3DX10、およびD3DX1のユーティリティライブラリとともに、deprecatedであることに留意してください。したがって、Windows 8.0、8.1、または10 SDKを使用している場合は、Direct3D 11をまったく使用せずにコードすることができます。Living without D3DXを参照してください。古いヘルパーを使い続ける場合は、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

関連する問題