ファイルがないというエラーを消すには?

解決


kei  2005-11-05 12:41:44  No: 59488  IP: 192.*.*.*

VC++ 6.0 で、インクルードしたファイルが見つかりませんというエラー(No such file or directory) が出ます。そのファイルはプロジェクトのフォルダの中に入れているので、存在しています。どうすれば、このエラーを取ることができるのでしょうか?  Visual Studio 2003 でビルドした時は、このようなメッセージは表示されません。

編集 削除
Geo=TK3  2005-11-06 04:07:29  No: 59489  IP: 192.*.*.*

これだけでは VC++ の設定がおかしいのかな?としか言い様が...(^^;;
とりあえずカレントフォルダがインクルードファイルの検索パスに含まれてい
ないものと推測。

えと、問題のファイルのインクルードを

#include <foo.h>

でやっているのだったら

#include "foo.h"

に変えてみてコンパイルしてみたらどうなるでしょうか?

編集 削除
DD.  2005-11-06 13:19:18  No: 59490  IP: 192.*.*.*

>そのファイルはプロジェクトのフォルダの中に入れているので、存在してい>ます。
プロジェクトに追加しているだけでインクルードしていないとか?
別フォルダ内にヘッダを格納しているとか?

また、自作ヘッダか否かによっても考えられるところが少し変わるかと。

編集 削除
kei  2005-11-07 12:45:03  No: 59491  IP: 192.*.*.*

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

"foo.h" のようにすると、このヘッダーのファイル自体にエラーが
あるとなっているので、ファイルは認識されているようです。自作の
ものではないので、手を加えると別のエラーがでてきそうなので、<foo.h>
としたまま、認識させるにはどうすればよいのでしょうか?

編集 削除
επιστημη  2005-11-07 12:55:48  No: 59492  IP: 192.*.*.*

include-pathを追加する。

編集 削除
Blue  2005-11-07 13:08:24  No: 59493  IP: 192.*.*.*

> <foo.h>としたまま、認識させる
にはヘッダーファイルまでのパスが通っていなければいけません。

メニューバー

ツール

オプション

ディレクトリ タブ

表示するディレクトリ が インクルードファイル であるとき
ディレクトリ リスト に追加する

ただし、ここで追加するとプロジェクトと関係なくパスが通ってしまうので注意。
(他のプロジェクトでもパスが有効になる)

編集 削除
kei  2005-11-07 14:19:32  No: 59494  IP: 192.*.*.*

ありがとうございます。
Blueさんの仰られた通りにすれば、ファイルの存在が
認識されました。
ありがとうございました。

編集 削除
επιστημη  2005-11-07 14:44:03  No: 59495  IP: 192.*.*.*

うーん、各プロジェクトのプロジェクト設定で(相対パスで)行った方が安全やと思うんやけど。

編集 削除
PATIO  2005-11-07 14:46:04  No: 59496  IP: 192.*.*.*

Blueさんが最後に書いておられる通り、

>ただし、ここで追加するとプロジェクトと関係なくパスが通ってしまうので注意。
>(他のプロジェクトでもパスが有効になる)

なのであるプロジェクトにしか関係ないインクルードファイルを認識させる為に
メニューバー−ツール−オプション−ディレクトリ タブに入れるべきではありません。
ここに入れるのはプロジェクトにかかわり無く必要なパスを入れるのみに留めるべきです。
どうしてもインクルードパスの設定で何とかしたいのであれば、
プロジェクトの設定のC/C++タブのカテゴリ:プリプロセッサにあるインクルードパスに追加するのが本当でしょう。
プロジェクトのワークスペースフォルダの中にフォルダー階層を作ってプロジェクトを管理しているとあるはずなのに参照できないような事は良くあります。
ビルドしているときのカレントディレクトリがいったい何処なのかで変わってきますので
フォルダ分けをして管理したいのであれば、その辺をしっかり認識した上でプロジェクトの設定を
するようにしないと駄目です。

編集 削除
Blue  2005-11-07 14:56:30  No: 59497  IP: 192.*.*.*

MSDNより

#include ディレクティブ
構文形式        処理
角かっこ形式 プリプロセッサはインクルード ファイルをまず、/I コンパイラ オプションで指定されたパスで、
              次に INCLUDE 環境変数で指定されたパスで探します。

とありましたね。

> プロジェクトの設定の〜
で設定したパスは、
> /I コンパイラ オプションで指定されたパス
になるのですね。勘違いしていました。

> INCLUDE 環境変数で指定されたパス
だけだと思っていたので、あのような方法を教えてしまいました。

編集 削除