4

次のパスを持つビジュアル スタジオ ソリューション myvs.sln がありますc:\dir1\dir2\dir3\myvs\myvs\myvs.sln。にブースト バージョン xxx がインストールされていc:\dir1\dir2\dir3\boostxxx\ます。

project->properties->c/c++->general:にあり../..;../../boostxxxます。ブースト ライブラリ内のインクルード ファイルの構文は次のとおりです#include <boost/smart_ptr/shared_ptr>

私のコード ファイルmyfile.hc:\dir1\dir2\dir3\yy1\myfile.h. myfile.h には、boost ライブラリを次のように含めます#include <boost/shared_ptr.hpp>。次のようなエラーが表示されますc:\dir1\dir2\dir3\yyy1/myfile.h fatal error C1083 cannot open include file boost/shared_ptr.hpp

問題は、これを修正するにはどうすればよいですか?

また、コンパイラがスローするエラー出力には、dir3 までは "\" があり、その後 "/" に変わることにも気付きました。

ほとんどの場合、相対パスがどのように機能するかを理解していません。また、絶対パスではなく相対パスのみを参照したいことに注意してください。誰か助けてくれませんか?私は、c++ Visual Studio 2010 を使用して Windows プラットフォームを使用しています。

4

1 に答える 1

3

検索パスの相対パスは、#includeディレクティブを含むファイルのディレクトリコンパイラの現在のディレクトリ、いくつかの簡単なテストが表示されます。

"..\.." から 2 レベル上がります。あなたのヘッダーファイルプロジェクトディレクトリではなく、コンパイラの現在のディレクトリ。

これを修正するには、次のように (文字通り)、Visual Studio プロジェクト ディレクトリでインクルード パスを明示的に開始します。

$(ProjectDir)..\..;$(ProjectDir)..\..\BoostXXX

フォワード スラッシュとバックスラッシュに関しては、C++ コードの#includeディレクティブでスラッシュを使用してください。これが最も移植性が高いためです。

インクルード パスの設定など、Windows ファイル システムを参照する場合は、スラッシュまたはバック スラッシュを使用します (ただし、単一の規則を使用するためにバック スラッシュを使用することをお勧めします)。

于 2012-11-14T01:20:21.343 に答える