VC++ 6.0 で、インクルードしたファイルが見つかりませんというエラー(No such file or directory) が出ます。そのファイルはプロジェクトのフォルダの中に入れているので、存在しています。どうすれば、このエラーを取ることができるのでしょうか? Visual Studio 2003 でビルドした時は、このようなメッセージは表示されません。
これだけでは VC++ の設定がおかしいのかな?としか言い様が...(^^;;
とりあえずカレントフォルダがインクルードファイルの検索パスに含まれてい
ないものと推測。
えと、問題のファイルのインクルードを
#include <foo.h>
でやっているのだったら
#include "foo.h"
に変えてみてコンパイルしてみたらどうなるでしょうか?
>そのファイルはプロジェクトのフォルダの中に入れているので、存在してい>ます。
プロジェクトに追加しているだけでインクルードしていないとか?
別フォルダ内にヘッダを格納しているとか?
また、自作ヘッダか否かによっても考えられるところが少し変わるかと。
ご返答ありがとうございます。
"foo.h" のようにすると、このヘッダーのファイル自体にエラーが
あるとなっているので、ファイルは認識されているようです。自作の
ものではないので、手を加えると別のエラーがでてきそうなので、<foo.h>
としたまま、認識させるにはどうすればよいのでしょうか?
include-pathを追加する。
> <foo.h>としたまま、認識させる
にはヘッダーファイルまでのパスが通っていなければいけません。
メニューバー
↓
ツール
↓
オプション
↓
ディレクトリ タブ
↓
表示するディレクトリ が インクルードファイル であるとき
ディレクトリ リスト に追加する
ただし、ここで追加するとプロジェクトと関係なくパスが通ってしまうので注意。
(他のプロジェクトでもパスが有効になる)
ありがとうございます。
Blueさんの仰られた通りにすれば、ファイルの存在が
認識されました。
ありがとうございました。
うーん、各プロジェクトのプロジェクト設定で(相対パスで)行った方が安全やと思うんやけど。
Blueさんが最後に書いておられる通り、
>ただし、ここで追加するとプロジェクトと関係なくパスが通ってしまうので注意。
>(他のプロジェクトでもパスが有効になる)
なのであるプロジェクトにしか関係ないインクルードファイルを認識させる為に
メニューバー−ツール−オプション−ディレクトリ タブに入れるべきではありません。
ここに入れるのはプロジェクトにかかわり無く必要なパスを入れるのみに留めるべきです。
どうしてもインクルードパスの設定で何とかしたいのであれば、
プロジェクトの設定のC/C++タブのカテゴリ:プリプロセッサにあるインクルードパスに追加するのが本当でしょう。
プロジェクトのワークスペースフォルダの中にフォルダー階層を作ってプロジェクトを管理しているとあるはずなのに参照できないような事は良くあります。
ビルドしているときのカレントディレクトリがいったい何処なのかで変わってきますので
フォルダ分けをして管理したいのであれば、その辺をしっかり認識した上でプロジェクトの設定を
するようにしないと駄目です。
MSDNより
#include ディレクティブ
構文形式 処理
角かっこ形式 プリプロセッサはインクルード ファイルをまず、/I コンパイラ オプションで指定されたパスで、
次に INCLUDE 環境変数で指定されたパスで探します。
とありましたね。
> プロジェクトの設定の〜
で設定したパスは、
> /I コンパイラ オプションで指定されたパス
になるのですね。勘違いしていました。
> INCLUDE 環境変数で指定されたパス
だけだと思っていたので、あのような方法を教えてしまいました。
ツイート | ![]() |