ホーム < ゲームつくろー! < Programming TIPs編 < d3d9types.hのwarning C4819「Unicodeに云々」の回避方法

その9 d3d9types.hのwarning C4819「Unicodeに云々」の回避方法


 有名な回避法ですが覚え書きとして記しておきます。DirectXでコンパイル時に、

C4819 警告
c:\dx9\include\d3d9types.h(1385) : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。


という警告が頻発します。これはd3d9types.h内に不正な文字が使われているためです。以下の赤い部分がそれに該当します:

d3d9type.hのエラー箇所
typedef struct _D3DDEVINFO_D3DVERTEXSTATS
{
   DWORD NumRenderedTriangles; /* total number of triangles that are not clipped in this frame */
   DWORD NumExtraClippingTriangles; /* Number of new triangles generated by clipping */
} D3DDEVINFO_D3DVERTEXSTATS, *LPD3DDEVINFO_D3DVERTEXSTATS;


typedef struct _D3DDEVINFO_VCACHE {
   DWORD Pattern; /* bit pattern, return value must be FOUR_CC(舛・ 羨・ 舛・ 践・ */
   DWORD OptMethod; /* optimization method 0 means longest strips, 1 means vertex cache based */
   DWORD CacheSize; /* cache size to optimize for (only required if type is 1) */
   DWORD MagicNumber; /* used to determine when to restart strips (only required if type is 1)*/
} D3DDEVINFO_VCACHE, *LPD3DDEVINFO_VCACHE;

typedef struct _D3DDEVINFO_D3D9PIPELINETIMINGS
{
   FLOAT VertexProcessingTimePercent;
   FLOAT PixelProcessingTimePercent;
   FLOAT OtherGPUProcessingTimePercent;
   FLOAT GPUIdleTimePercent;
} D3DDEVINFO_D3D9PIPELINETIMINGS;

と言っても何千行もあるこのヘッダーファイルですから、探すのは難儀です。素直に「D3DDEVINFO_VCACHE」を検索して下されば変な文字があるのですぐに見つかります。該当箇所はありがたいことにコメント文なので、「FOUR_CC」から「*/」の間をさっくりと削除すれば警告は出なくなります。

 d3d9types.hはDirectX9をインストールしたフォルダのIncludeフォルダ内にありますが、warningが出ている出力ウィンドウでダブルクリックをしても飛んでくれます。煩わしい警告なので、さっさと直してしまった方がいいですね。