予期せぬEOFが検出されました。

解決


サス  2010-11-09 16:49:41  No: 72035  IP: [192.*.*.*]

こんにちわ。
わからないことがあるので、お聞きしたいのです。

DDKを使ってC++でプログラムを組んだのですが、

・fatal error C1004予期せぬEOFが検出されました
・error C2146 構文エラー";"がLOG_CONFの前に必要です。

とコンパイルエラーが出てしまいます。

これが私の作成したプログラムであれば、まだわかるのですが、DDKのソースで出てしまいます。

恐らく、私が作成したソースで、該当DDKをインクルードしている部分が悪いのだと思っているのですが、カッコの数や、全角スペースなどを探しても見つかりません。
また、DDKのソースを誤って書き換えたとかと思ったので、再度インストールを行いましたが、結果は変わりませんでした。

何か、ヒントになるようなことがあれば教えてください。
お願いします。

環境は以下の通りです。
WindowsXP SP3
VC6.0

エラーが発生するDDKのファイル
cfgmgr32.h

編集 削除
tetrapod  2010-11-09 17:37:09  No: 72036  IP: [192.*.*.*]

こういうのはたいてい #include が不足しているだけ。
#include <cfgmgr32.h> の前に何か別の #include <....> が必要なのだろう。

編集 削除
サス  2010-11-11 16:20:37  No: 72037  IP: [192.*.*.*]

tetrapodさん

ありがとうございます。
まだ、エラーは無くなっていませんが、
確認してみようと思います。

編集 削除
gak  2010-11-15 18:12:56  No: 72038  IP: [192.*.*.*]

[解決]がついてるが、[解決]していない感じにも見えるので遅延私見レス。

> ・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 されてるみたいだから、こちらでも大丈夫な気がする。

編集 削除
サス  2010-11-17 14:30:36  No: 72039  IP: [192.*.*.*]

>gakさん
レスありがとうございます。
仰る通り、まだ解決しておりません。

私もgakさんが仰っていることが原因と考え、インクルードを行ってみましたが、エラーは無くなりませんでした。

また、別プロジェクトを作成し、ビルドが通ることを確認した後、cfgmgr32.hをインクルードし、再度ビルドしてみましたが、同じエラーが発生します。

実際にエラーを解決したいソースコードはかなり昔に作られたもので、その当時は動いていたと思われるので、私の開発環境の設定の問題か?とも思っております。

編集 削除
gak  2010-11-17 17:55:19  No: 72040  IP: [192.*.*.*]

問題の切り分けって事で

  #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 行以上のヘッダだから範囲が広いし。

編集 削除
サス  2010-11-19 11:27:30  No: 72041  IP: [192.*.*.*]

>gakさん

ありがとうございます。
解決しました。

開発環境の設定の問題だったようです。
プロジェクト→設定→C/C++のカテゴリでプリプロセッサを選択し、
インクルードファイルのパスにSDKのIncludeフォルダのパスを設定したら動作しました。

お手数おかけして申し訳ありませんでした。
本当にありがとうございます。

編集 削除