ページ 11

コンパイルが通らない

Posted: 2013年7月16日(火) 14:20
by dic(ネカフェより)
Windows7 Home Edition, Visual C++ 2010 Express に DirectX 9,0 SDK をインストールし
空のWindowsアプリケーションを作り、[ stdafx.h ] に

コード:

// TODO: プログラムに必要な追加ヘッダーをここで参照してください。
#include	<d3d9.h>
#include	<dxerr9.h>
を追加し、コンパイルしたところ以下のコンパイルエラーがでました。

1>------ ビルド開始: プロジェクト: [2013 07 16] DirectX 3D, 構成: Debug Win32 ------
1> stdafx.cpp
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(290): error C2146: 構文エラー : ';' が、識別子 'PVOID64' の前に必要です。
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(290): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(8992): error C2146: 構文エラー : ';' が、識別子 'Buffer' の前に必要です。
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(8992): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(8992): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

コード:

[ winnt.h ] : 290行目

typedef void *PVOID;
typedef void * POINTER_64 PVOID64; << ここ


[ winnt.h ] : 8992行目

typedef union _FILE_SEGMENT_ELEMENT {
    PVOID64 Buffer;  << ここ
    ULONGLONG Alignment;
}FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT;

上の290行目 * POINTER_64 という定義がどこにもみつからなかったので
これが原因だろうと思います。しかし、winnt.h は読み取り属性がついていてて
私では書き込みできません。ファイルのプロパティから読み取り属性を
はずして、試してもシステムエラーとなり、書き込みができません。

どうすれば、コンパイルが通るようになるのでしょうか?

Re: コンパイルが通らない

Posted: 2013年7月16日(火) 15:10
by h2so5
windows.hを最初にインクルードしてみてはどうでしょう。

Re: コンパイルが通らない

Posted: 2013年7月23日(火) 15:38
by dic(ネカフェより)
インクルードよりもはやく定義したところうまくいきました