2

実行可能ファイルと同じディレクトリにあるいくつかのリソースを使用する C プログラムがあります。ランダムな作業ディレクトリ (プログラムが配置されているディレクトリではない) からプログラムを実行すると、コードで使用する相対パスが実行可能ファイルのパスではないため、リソースが読み込まれません。どうすればこれをうまく解決できますか?

4

2 に答える 2

3

リソースを含むディレクトリのパスを引数としてプログラムに渡し、次のいずれかを行います。

  • プロセスの現在のディレクトリをディレクトリに変更します ( chdir()Unix およびSetCurrentDirectory()Windows の場合)、または
  • リソースへの絶対パスを構築する

Windowsの場合、質問のコメントが示唆するように、exeusingのパスを取得しGetModuleFileName()、そこからディレクトリを抽出して、プログラムに引数を提供する必要を回避できます。次に、リストされている 2 つのオプションのいずれかを使用すると、プログラムをどこからでも実行でき、リソースを見つけることができます。

于 2012-09-18T16:56:16.033 に答える