2017-07-16 4 views
1

だから、誰かが最近の私のプロジェクトにいくつかのバグ修正を提出し、彼らはまた、これを含める:このrealpath定義に対するクロスプラットフォームの代替手段ですか?

#ifdef _MSC_VER 
    #ifndef PATH_MAX 
    #define PATH_MAX _MAX_PATH 
    #endif 
    #define realpath(N,R) _fullpath((R),(N),_MAX_PATH) 
#endif 

問題は、私はコードを使用していますです::のMinGWをもつブロック、私がコンパイルしようとするので、それが言いますrealpath()はまったく定義されていません。提出者は何も提供していませんでした.MSVCなしでrealpathを検索しようとすると、 MSVCのリアルパスが使用されます。誰か私はMinGWで代わりに使うことができるものがありますか?

答えて

1

realpath()は、それがMinGWによって見つからない理由であるPOSIX関数です。あなたは、ブースト::ファイルシステムライブラリをクロスプラットフォームの代替手段として使用して、絶対パスを見つけることができます。ブースト::ファイルシステムのためのチュートリアルが利用できる以下の通りです:

http://www.boost.org/doc/libs/1_45_0/libs/filesystem/v2/doc/index.htm#tutorial

すでにブースト::ファイルシステムライブラリにいくつか質問がありました。 有用である可能性がある1へのリンクは以下に添付されています:

How do I "normalize" a pathname using boost::filesystem?

+0

ありがとう!私はこれを試してみましょう。 –

+0

@KelvinShadewingこの回答が役に立ったら、それを受け入れることができますか? –