プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。私は30代の男性です。

「Visual C++ の初歩(http://www.gulf.or.jp/~damayan/vc/visualc2.htm)」というサイトで、ストップウォッチプロジェクトファイルがダウンロードできたので、コピペしてコンパイルしようと思ったのですが、うまくいきませんでした。

いつも下記のようなエラーメッセージが表示されます。ヘッダーファイルに「stdafx.h」は置いてあるのですが、やり方が間違っているのでしょうか?

ちなみに、ダウンロードした「release」ファイルの中のexeファイルを起動すれば、実行はされます。「自分が新規でプロジェクトファイルを作り、ダウンロードしたソースをコピーしてコンパイルを試みても、うまくいかない。」という話です。

よきアドバイスを頂ければと思います。

宜しくお願い致します。



----- ビルド開始: プロジェクト: abc, 構成: Debug Win32 ------
コンパイルしています...
abc.cpp
c:\documents and settings\my documents\visual studio 2005\projects\abc\abc\abc.cpp(111) : fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?
ビルドログは "file://c:\Documents and Settings\My Documents\Visual Studio 2005\Projects\abc\abc\Debug\BuildLog.htm" に保存されました。
abc - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

A 回答 (4件)

★ダウンロードできる書庫ファイル abc.lzh は正常に出来ましたよ。


・自分で新規作成したプロジェクトの場合は、resource.h、abc.rc が必要です。
 もう一度、新しいプロジェクト abc を作った方が早いかもしれません。
 ダウンロードした書庫ファイルで必要なものは次の通りです。
 ×abc.aps
 ○resource.h
 ○abc.cpp
 ×abc.opt
 ×abc.plg
 ○abc.rc
 ×abc.dsp
 ×abc.dsw
 ×abc.ncb
 上記の3つのファイル以外は、古いバージョン用のプロジェクトファイルなので必要ありません。

手順:
・メニューバーより、新規作成(N)→プロジェクト(P)を選択して下さい。
・『Win32 プロジェクト』を選択してプロジェクト名には『abc』を入力して下さい。OK ボタンも押す。
・『アプリケーションの設定』に切り替えて『空のプロジェクト(E)』にチェックして下さい。完了ボタンも押す。
・右側にある画面を『ソリューション・エクスプローラ』に切り替えて下さい。
 abc
 ├参照設定
 ├ソース ファイル
 ├ヘッダー ファイル
 └リソース ファイル
 という構造が現れます。
・ダウンロードした abc.lzh の中にあった3つのファイルをプロジェクトに参加させます。
 参加とは、ソースファイルなどを管理構造に設定することです。
 エクスプローラからドラッグ&ドロップすることで簡単に出来ます。
 (1)『resource.h』をドラッグして『ヘッダー ファイル』フォルダでドロップ(落とす)します。
 (2)『abc.cpp』をドラッグして『ソース ファイル』フォルダでドロップします。
 (3)『abc.rc』をドラッグして『リソース ファイル』フォルダでドロップします。
 上記の3ステップを行った後は、ビルドボタンを押して下さい。
・これで正常にコンパイルできます。ただし、ちょっとだけ警告メッセージが出ますけど気にしないで良し。

その他:
・新しいプロジェクト abc を作ると
 ■abc
 ├■Debug
 │├abc.res
 │├BuildLog.htm
 │├abc.ilk
 │├abc.obj
 │├abc.pdb
 │├vc70.pdb
 │├vc70.idb
 │└abc.exe ←実行するとストップウォッチを体感できます。
 │
 ├abc.sln
 ├abc.vcproj
 ├abc.ncb
 └abc.suo
 というフォルダ構造になります。
・以上。おわり。
    • good
    • 0
この回答へのお礼

Oh-Orange様
いつもご回答頂きありがとうございます。
詳細な説明で助かります。

>(1)『resource.h』をドラッグして『ヘッダー ファイル』フォルダでドロップ(落とす)します。

ドラッグ&ドロップできるんですね。ファイルは全部ダウンロードしたものに変えました。No.2さんのお礼に書きましたが、インクルードファイルを変えてみたらできました。

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

お礼日時:2007/04/18 08:51

★追記。


・警告メッセージを出さなくするには、abc.cpp の 82、109 行を修正します。
 82行目。
 修正前⇒return HANDLE_WM_INITDIALOG(hDlg, wParam, lParam, OnInitDialog);
 修正後⇒return (BOOL)HANDLE_WM_INITDIALOG(hDlg, wParam, lParam, OnInitDialog);
 ※(BOOL)キャストを付けます。
 
 109行目。
 修正前⇒return DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),
 修正後⇒return (int)DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),
 ※(int)キャストを付けます。

その他:
・abc.lzh ファイル内の resource.h、abc.cpp、abc.rc の3つ以外のファイルは削除して良し。
・『stdafx.h』は使っていませんし、#include "stdafx.h" も削除しないでも良いですよ。
 多分、新規プロジェクトのときに『空のプロジェクト』にチェックしなかったために多数の
 ファイルが出来てしまい afxres.h ヘッダも存在しただけです。
・『空のプロジェクト』にチェックすると自動的には stdafx.h など複数のファイルは作られません。
 今回は新規プロジェクトのときに『空のプロジェクト』にチェックしてから作れば良いです。
 その後、resource.h、abc.cpp、abc.rc の3つのファイルをプロジェクトに参加させてビルドすれば
 うまくコンパイルできます。実行も正常です。
・以上。おわり。
    • good
    • 0
この回答へのお礼

Oh-Orange様
追記の説明ありがとうございます。

お礼日時:2007/04/18 08:52

ダウンロードできるアーカイブの中身を見ると、


VC6くらいのバージョンで作ったものですね。
それと、afxなんとか とか なんとかafx という名前は
MFCを使っているときに使われるものですが、
このプログラムはMFCを使っていないので必要ないですね。

> 2005\projects\abc\abc\abc.cpp(111) : fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?

これは多分、コンパイラの推測が間違っているメッセージです。

ダウンロード→プロジェクト作成→コンパイル
→ エラーが出たのでヘッダファイルをいじった

とやってから「ソリューションのビルド」をやりませんでしたか?
ヘッダファイルをいじった場合は
「ソリューションのリビルド」
(ビルドメニューの上から二番目)をやった方がいいです。

多分、
1. abc.lzhを適当なディレクトリに展開
2. 適当なエディタかメモ帳で abc.rcを開く
3. #include "afxres.h" の行を削除するか
コメントアウトする
4. セーブして終了
5. start abc.dsw
6. Visual Studioが起動してプロジェクトを変換するか?
と訊かれるので「はい」を選択
7. ビルド

で行けると思います。
stdafx.hはつくる必要ありません。

もちろん自分でプロジェクトを作って、そこにファイルを
登録していってもOKです。
その辺はお好きに。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>1. abc.lzhを適当なディレクトリに展開
2. 適当なエディタかメモ帳で abc.rcを開く
3. #include "afxres.h" の行を削除するか
コメントアウトする
4. セーブして終了
5. start abc.dsw
6. Visual Studioが起動してプロジェクトを変換するか?
と訊かれるので「はい」を選択
7. ビルド

で行けると思います。
stdafx.hはつくる必要ありません。

「3.」で#include "afxres.h" を#include "stdafx.h"に書き換えたら、偶然にもうまくいきました。解決策が若干変わってしまいましたが、コンパイルできたので自分としてはこれでOKです。
ありがとうございました。

お礼日時:2007/04/18 08:37

 私はVCの環境はありませんが、該当のファイルをダウンロードして別環境で実行してみました。


 上手く行ったので参考にしてください。

 Borland C/C++でですが、
>bcc32 -W abc.cpp
 abc.rcをメモ帳で開き #include "stdafx.h"をコメントアウトし
>brc32 abc.rc abc.exe
 としたら成功しました。

 VCの方でも同様にプロジェクトからstdafx.hを外し、
abc.rcをメモ帳で開き
#include "stdafx.h"
の部分を
// #include "stdafx.h"
とコメントを加え、ビルドしてみてください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>#include "stdafx.h"
の部分を
// #include "stdafx.h"
とコメントを加え、ビルドしてみてください。

このようにもしてみたのですが、うまくはいきませんでした。

お礼日時:2007/04/18 08:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!