2016-05-16 9 views
0

プログラムが元々C言語で生成されたディレクトリを知る方法はありますか?私は自分のプログラムがコンピュータ内のどこにあるのかを知りたい。私は既にに_getcwd()を使ってみました。私もunistd.hを使ってgetcwd()を試しました。しかし、ここに問題があります。プログラムのディレクトリにPATHを追加した場合、関数_getcwd()getcwd()のパスは、私がプログラムを呼び出したパスを返します。だから私がデスクトップでプログラムを走らせると、代わりにデスクトップのパスが返されます。私は既にthisメソッドを使ってみましたが、問題は解決しません。呼び出し元パスの値を返します。私は、プログラムのパスを知るためにどのような関数を使うのか、プログラムが呼び出されるパスではないのかを知りたい。 どのような機能を使用する必要がありますか?プログラムが呼び出される元の場所を取得する

+0

すでにこれらの方法を試しました。呼び出されているプログラムの元のパスではなく、呼び出された場所のパスを返します。 –

答えて

0

現在の作業ディレクトリはまったく使用されません。実行可能イメージのファイルシステム内の場所と現在の作業ディレクトリとの間には、偶然以外の接続はありません。

あなたが _get_wpgmptrまたは GetModuleFileNameHMODULEため NULLを渡す)(Visual Studioのに付属CRTにMicrosoft固有の拡張)を呼び出して実行可能ファイルへの完全修飾パスを取得し、 PathRemoveFileSpecを呼び出すことによって、パスを抽出することができます

(Windows 8以上ではPathCchRemoveFileSpec)。

+0

私はWindows 7を使用しています。 '_get_wpgmptr()'のライブラリは何ですか?既に 'stdlib.h'と' windows.h'を含んでいますが、コンパイラは '' _get_wpgmptr 'への未定義参照をしています。 –

+1

@BryanJames: '_get_wpgmptr()'はVisual StudioのCRT実装の一部ですので、#include **と** Visual Studio(またはMicrosoftコンパイラ)を使用する必要があります。別のコンパイラを使用している場合は、代わりにWindows API呼び出し 'GetModuleFileName'を使用できます。 – IInspectable

関連する問題