いつもここにお世話になってますm(__)m。今回は下記の様なエラーが出てしまい、困っております(--;)。
<エラー内容>
1>C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(222) : error C2146: 構文エラー : ';' が、識別子 'PVOID64' の前に必要です。
1>C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(222) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
エラーが起こっているのはwinnt.h内の「typedef void * POINTER_64 PVOID64;」という部分なのですが(他にもありますが)、winnt.hは弄ってないのです。
ネットで検索したところインクルードファイルディレクトリの指定の順番が怪しそうなので、「ツール」「オプション」でPlatformSDK関連が一番上に来るように変更(実行可能ファイル、インクルードファイル、ライブラリファイル)してリビルドしてみましたが結果は変わりませんでした。
他にチェックすべき点をお教え頂けると助かります。
[環境]
・WindowsXP(SP2)
・Visual Studio 2005 Professional(C++、SPなし)
No.1
- 回答日時:
回答ありがとうございます。
>「()」(丸括弧)が有った方が良いんじゃない?
>それかその行の手前で「;」が抜けているか
質問時にも書きましたがwinnt.h自体は弄ってないのですよね(winnt.hはPlatformSDKに入ってる物です)。それを弄るというのはどうも抵抗がありまして。
ただ(私が極々初心者というのもあるのですが)こういう記述の仕方って初めて見るんですよね(--;)。やはり弄らないといけないんでしょうか・・・。
No.3ベストアンサー
- 回答日時:
この人によると、DirectX9.0が怪しいんじゃないか?
って事ですね。
POINTER_64が使われようとしているということは、64bit版モジュールを作るってことですかね?
コンパイルオプションとインクルード指定があってないような気がしなくもないです。
回答ありがとうございます。
>この人によると、DirectX9.0が怪しいんじゃないか?
確かにDirectX9.0を使用しています(Feb2007)。
>POINTER_64が使われようとしているということは、64bit版モジュールを作るってことですかね?
う~ん、当人はそのつもりではない様ですが(実はコーディングは別の人が行なっているので)、何か間違えているのかもしれません。確認してみます。
>コンパイルオプションとインクルード指定があってないような気がしなくもないです。
コンパイルオプションですか・・・。ちょと調べてみますm(__)m。
No.4
- 回答日時:
★インクルード文の順序は?
#include <windows.h>
#include <winnt.h>
という順ではどうですか?
逆だとエラーがいっぱい出ます。
インクルードの順も調査して見て下さい。
・以上。
回答ありがとうございます。
>#include <windows.h>
>#include <winnt.h>
>という順ではどうですか?
ところがプロジェクト内を検索してもwinnt.hをインクルードしてる行はないのです(--)。インクルードしている他のヘッダファイル内で記述されてると思うのですが・・・。windows.h内でwindef.hをインクルードしている行があるみたいなので、windows.h>windef.h>winnt.hという流れなのかなぁと思いますが、となればコードの書き方云々ではないような気がしております(--;)。
No.5
- 回答日時:
ん~,
1.コンパイラが 64ビット関係の予約語を知らない
2.インクルードファイルの検索順序がおかしい
くらいしか想像できないですね....
まず問題の POINTER_64 ですが, これは BaseTsd.h で __ptr64 として (あるいは空文字列として) #define されます (BaseTsd.h 自体は winNT.h でインクルードされる). ということで, 何らかの事情で「64ビットモードでコンパイルする」ような (記号の) 定義があるにもかかわらずコンパイラが 64ビット関係の予約語を知らないと,
typedef void * __ptr64 PVOID64;
という文になってエラーとなります (__ptr64 を予約語だと思えば OK).
もう 1つの問題として, POINTER_64 を定義するはずの BaseTsd.h が, 実は VC8 には 3個あります. なので, 間違ったインクルード順序だとおかしなことになります.
回答ありがとうございます。また、お例が遅くなり申し訳ありませんでした。
実は環境が使えなくなってしまいまして、確認がとれない状態が続いております。折角回答頂いたのに申し訳ない限りでございますm(__)m。
No.6
- 回答日時:
私も同エラーが出ました。
lib か include ファイルかは記憶が曖昧ですが、
複数のDirectSDKがディレクトリに追加されているときに起こりました。
その時は優先度の低い(最上段ではない)ディレクトリのパスを削除することで解消できました。
今回のケースは判りませんが…
この回答への補足
回答下さった皆様ありがとうございましたm(__)m。
現在開発環境が無い状態になってしまっており、頂いたアドバイスを生かせない状態です。ですので、この質問は一端閉め切ることに致しました(住居移動に加え、メール設定をしていなかったので放置になってちまいました)。
本来なら皆様にポイントを進呈したいのですが、制限があるそうなので申し訳ありません。
重ねてお礼を申し上げます。ありがとうございました。
回答ありがとうございます。また、お例が遅くなり申し訳ありませんでした。
実は環境が使えなくなってしまいまして、確認がとれない状態が続いております。折角回答頂いたのに申し訳ない限りでございますm(__)m。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# PC画面を録画するプログラムでdllの読み込みエラー 1 2023/04/22 08:31
- Outlook(アウトルック) outlookの送信エラーについて 1 2022/05/13 12:04
- C言語・C++・C# ExcelCS 1 2023/01/27 19:47
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- C言語・C++・C# Microsoft Visual Studio Community 2019 タブキーが入力できない 1 2022/04/30 06:39
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# visual studio 2019において、宣言していない変数があるのにエラーなくビルド出来ました 6 2023/03/08 16:32
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- SQL Server PCが悪くなって新しいPCにSSMSのデータを移すよう頼まれたけど移し方が分からない 1 2023/05/18 16:54
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
適切な変換関数が存在しない???
-
エラー: ‘inval’ の記憶サイズ...
-
C2146を回避するにはどうしたら...
-
Excelのエラーで困ってます。
-
win32api構造体引数の型指定に...
-
fatal error LNK1112
-
Handlesについて
-
ビルド失敗 指定されたファイ...
-
レコードセットをcloseする所で...
-
MakeSureDirectoryPathExists
-
バッチからsqlplusの接続エラー...
-
入れ子になっている構造体配列...
-
左側がクラス、構造体、共用体...
-
デバッグ中のエラーのことで教...
-
fortranでプログラムを実行する...
-
include<wtsapi32.h>でエラーが...
-
VB2008で定数に色の設定をした...
-
不正なメモリ領域へのアクセス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
適切な変換関数が存在しない???
-
Excelのエラーで困ってます。
-
バッチからsqlplusの接続エラー...
-
fortranでプログラムを実行する...
-
HEWを使用しているのですが、こ...
-
コンパイルできません。
-
デバッグ中のエラーのことで教...
-
visual C++ でビルドの中止がで...
-
BC30002: 型 'ListItem' が定義...
-
Handlesについて
-
sys/time.hのインクルードがで...
-
ビルド失敗 指定されたファイ...
-
VB2008で定数に色の設定をした...
-
RightとLeft関数のライブ...
-
multiple definitionというエラー
-
WindowsからLinuxへの移植
-
HANDLEの宣言でのエラー
-
レコードセットをcloseする所で...
おすすめ情報