• ベストアンサー

VCでストップウォッチを作りたいのですが、うまくいきません。

こんにちは。私は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 スキップ ==========

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★ダウンロードできる書庫ファイル 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  というフォルダ構造になります。 ・以上。おわり。

DT50
質問者

お礼

Oh-Orange様 いつもご回答頂きありがとうございます。 詳細な説明で助かります。 >(1)『resource.h』をドラッグして『ヘッダー ファイル』フォルダでドロップ(落とす)します。 ドラッグ&ドロップできるんですね。ファイルは全部ダウンロードしたものに変えました。No.2さんのお礼に書きましたが、インクルードファイルを変えてみたらできました。 ありがとうございました。

その他の回答 (3)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.4

★追記。 ・警告メッセージを出さなくするには、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つのファイルをプロジェクトに参加させてビルドすれば  うまくコンパイルできます。実行も正常です。 ・以上。おわり。

DT50
質問者

お礼

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

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

ダウンロードできるアーカイブの中身を見ると、 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です。 その辺はお好きに。

DT50
質問者

お礼

ご回答ありがとうございます。 >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です。 ありがとうございました。

  • glphon
  • ベストアンサー率26% (41/152)
回答No.1

 私は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" とコメントを加え、ビルドしてみてください。

DT50
質問者

お礼

ご回答ありがとうございます。 >#include "stdafx.h" の部分を // #include "stdafx.h" とコメントを加え、ビルドしてみてください。 このようにもしてみたのですが、うまくはいきませんでした。

関連するQ&A