こんにちわ。
わからないことがあるので、お聞きしたいのです。
DDKを使ってC++でプログラムを組んだのですが、
・fatal error C1004予期せぬEOFが検出されました
・error C2146 構文エラー";"がLOG_CONFの前に必要です。
とコンパイルエラーが出てしまいます。
これが私の作成したプログラムであれば、まだわかるのですが、DDKのソースで出てしまいます。
恐らく、私が作成したソースで、該当DDKをインクルードしている部分が悪いのだと思っているのですが、カッコの数や、全角スペースなどを探しても見つかりません。
また、DDKのソースを誤って書き換えたとかと思ったので、再度インストールを行いましたが、結果は変わりませんでした。
何か、ヒントになるようなことがあれば教えてください。
お願いします。
環境は以下の通りです。
WindowsXP SP3
VC6.0
エラーが発生するDDKのファイル
cfgmgr32.h
こういうのはたいてい #include が不足しているだけ。
#include <cfgmgr32.h> の前に何か別の #include <....> が必要なのだろう。
tetrapodさん
ありがとうございます。
まだ、エラーは無くなっていませんが、
確認してみようと思います。
[解決]がついてるが、[解決]していない感じにも見えるので遅延私見レス。
> ・fatal error C1004予期せぬEOFが検出されました
> ・error C2146 構文エラー";"がLOG_CONFの前に必要です。
> エラーが発生するDDKのファイル cfgmgr32.h
多分 cfgmgr32.h 内の
typedef DWORD_PTR LOG_CONF;
で引っ掛かってるんじゃないの?
DWORD_PTR を LOG_CONF として typedef しようとしてるが、DWORD_PTR 自体が未定義なため C2146 発生とか。
> #include <cfgmgr32.h> の前に何か別の #include <....> が必要なのだろう。
DWORD_PTR 自体は basetsd.h で typedef されている様だから、↑で示されてる通り #include してみてはどうかと。
windows.h 等からも間接的に include されてるみたいだから、こちらでも大丈夫な気がする。
>gakさん
レスありがとうございます。
仰る通り、まだ解決しておりません。
私もgakさんが仰っていることが原因と考え、インクルードを行ってみましたが、エラーは無くなりませんでした。
また、別プロジェクトを作成し、ビルドが通ることを確認した後、cfgmgr32.hをインクルードし、再度ビルドしてみましたが、同じエラーが発生します。
実際にエラーを解決したいソースコードはかなり昔に作られたもので、その当時は動いていたと思われるので、私の開発環境の設定の問題か?とも思っております。
問題の切り分けって事で
#include <cfgmgr32.h>
してる前に
typedef unsigned __int32 DWORD_PTR; // DWORD_PTR(for 32bit platform) を自力定義
を追加してみたらどうなる?
> DWORD_PTR を LOG_CONF として typedef しようとしてるが、DWORD_PTR 自体が未定義なため
少なくとも俺が怪しいと思っていた↑が関係しているかどうかは判ると思う。
実際に cfgmgr32.h のどの行のどんなコードでエラーが発生しているのかを示した方が良いかもしんないね。
cfgmgr32.h っていっても 3000 行以上のヘッダだから範囲が広いし。
>gakさん
ありがとうございます。
解決しました。
開発環境の設定の問題だったようです。
プロジェクト→設定→C/C++のカテゴリでプリプロセッサを選択し、
インクルードファイルのパスにSDKのIncludeフォルダのパスを設定したら動作しました。
お手数おかけして申し訳ありませんでした。
本当にありがとうございます。