C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: #include "stdafx.h"がエラーになる


(過去ログ 117 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■68849 / inTopicNo.1)  #include "stdafx.h"がエラーになる
  
□投稿者/ のぶ (41回)-(2013/11/22(Fri) 14:47:17)

分類:[C/C++] 

開発環境:Windows7 Visual Studio 2013
開発言語:C++(MFC)
プロジェクト設定:
 MFCの使用:スタティックライブラリを使用する
 文字セット:マルチバイト文字セット
 VC++ディレクトリ:既定値のまま
 追加のインクルードディレクトリ:$(SolutionDir)Common\Hoge\src;
                   $(SolutionDir)Common\Hoge\vendor\...\include(...は省略です)
 追加のライブラリディレクトリ:$(SolutionDir)Common\Hoge\vendor\...\lib


現在以下の様なフォルダ構成でのプロジェクト(Updater)を作成しています。
Commonフォルダはこのプロジェクト以外でも使用する共通部分のソース、ライブラリ等が含まれています。
Updaterプロジェクトには、srcフォルダからヘッダー、ソースをインポート(?)しています。
インポートはsrcフォルダにあるファイルをソリューションエクスプローラーにドロップしました。

エラーとなっているのは、UpdaterプロジェクトにインポートしたBase64.cppで、
ファイルの先頭に「#include "stdafx.h"」と記述してあるのですが、それがどうしてもエラーになり、解決できません。
どのようにすればいいのでしょうか?

まず何もせずにインポートしただけの状態のエラーは、次の様なものです。
ただし、こちらは正常にビルドでき、実行もできます。
・IntelliSense: ソース ファイルを開けません "StdAfx.h"
・「IntelliSense: 識別子 "CString" が定義されていません」等の定義されてませんが沢山。
試したこと:インテリセンスのエラーなので、sdfファイルの削除 -> 何も変わらず


次にファイルがうまく開けていないのなら、パスを指定して書いてみては?と思ったので「#include "../../../Updater/stdafx.h"」としました。
しかし今度は別のエラーになりました。
・warning C4627: '#include "../../../Updater/stdafx.h"': プリコンパイル済みヘッダーの使用を検索中にスキップされました
・warning C4627: '#include "Base64.h"': プリコンパイル済みヘッダーの使用を検索中にスキップされました
・error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?
#相対パスで書いてみたものの、こちらは的外れな気がしてます。


[ソリューションフォルダ]
┣[Common]
┃ ┗[Hoge]
┃   ┣[src]
┃   ┃ ┣Base64.h
┃   ┃ ┣Base64.cpp
┃   ┗[vender]
┃     ┣略...
┣[Updater]
┃ ┣stdafx.h
┃ ┣Base64.h(インポートしたもの)
┃ ┣Base64.cpp(インポートしたもの)
┃ ┣各ファイル略...
┗Updater.sln

引用返信 編集キー/
■68867 / inTopicNo.2)  Re[1]: #include "stdafx.h"がエラーになる
□投稿者/ Azulean (241回)-(2013/11/23(Sat) 00:15:13)
No68849 (のぶ さん) に返信
> ・IntelliSense: ソース ファイルを開けません "StdAfx.h"
> ・「IntelliSense: 識別子 "CString" が定義されていません」等の定義されてませんが沢山。
> 試したこと:インテリセンスのエラーなので、sdfファイルの削除 -> 何も変わらず

IntelliSense のエラーの解決策は何とも言いかねるのですが、邪魔であればエラー一覧で右クリックしてもらえれば非表示にすることはできたと思います。
ところで、IntelliSense 以外のエラーは出ていないのですよね?

> 次にファイルがうまく開けていないのなら、パスを指定して書いてみては?と思ったので「#include "../../../Updater/stdafx.h"」としました。
> しかし今度は別のエラーになりました。
> ・warning C4627: '#include "../../../Updater/stdafx.h"': プリコンパイル済みヘッダーの使用を検索中にスキップされました
> ・warning C4627: '#include "Base64.h"': プリコンパイル済みヘッダーの使用を検索中にスキップされました
> ・error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?
> #相対パスで書いてみたものの、こちらは的外れな気がしてます。

stdafx.h に関しては相対パスを書かなくても、#include "stdafx.h" と書けば十分であり、逆にこう書かないと検出されないようです。
引用返信 編集キー/
■68951 / inTopicNo.3)  Re[2]: #include "stdafx.h"がエラーになる
□投稿者/ のぶ (42回)-(2013/11/26(Tue) 10:12:10)
No68867 (Azulean さん) に返信
ご回答ありがとうございます。
お返事遅くなりました。

> IntelliSense のエラーの解決策は何とも言いかねるのですが、邪魔であればエラー一覧で右クリックしてもらえれば非表示にすることはできたと思います。
> ところで、IntelliSense 以外のエラーは出ていないのですよね?
IntelliSense以外はエラーはでていません。(MBCSは将来削除予定ですよ!という警告?はでていますが、それは分かった上ですので。)
実行にも、処理内容にも問題はなくこのまま開発は続行できそうでうが、インテリセンスが効かないので不便すぎて困ってます。


> stdafx.h に関しては相対パスを書かなくても、#include "stdafx.h" と書けば十分であり、逆にこう書かないと検出されないようです。
そうですよね。相対パスを書くとエラーだらけになってしまったので、これは絶対違うと思っていました。
ただ、自分一人の判断では100%の自信が持てなかったので、これで安心して「間違った対応」だったと考えられました。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -