1

重複の可能性:
実行可能ファイルのパスを取得

C ++でアプリケーションを使用していますが、完全なディレクトリ(このアプリケーションの.exeファイルが存在する場所)を取得するにはどうすればよいですか?

編集:OS-Windows

4

2 に答える 2

1

ウィンドウズ:

WCHAR path[MAX_PATH];
GetModuleFileName(NULL, path, ARRAYSIZE(path));

Linux:

char buffer[MAX_PATH];
readlink("/proc/self/exe", buffer, MAX_PATH);
于 2012-10-14T13:55:32.683 に答える
0

これに適したクロスプラットフォームソリューションはありませんが、すべての主要なプラットフォームでこれを行うことができます。

  • /proc/self/exeLinuxの場合:特別なファイルを読む

char buf[PATH_MAX];
ssize_t len;
if ((len = readlink("/proc/self/exe", buf, bufsize)) != -1) {
    // buf contains the path
} else {
    // error
}
  • Mac OS Xの場合:_NSGetExecutablePath()関数(からman 3 dyld)を使用します

#include <stdint.h>
#include <limits.h>

uint32_t size = PATH_MAX;
char buf[PATH_MAX];
if (_NSGetExecutablePath(buf, &size) != -1) {
    // buf now contains the path
} else {
    // error
}
  • Windowsの場合:ハンドルとしてを使用してGetModuleFileName()呼び出します。NULL

#include <windows.h>

char buffer[1024];
if (GetModuleFileName(NULL, buffer, sizeof(buffer)) != 0) {
    // buffer contains the path
} else {
    // error
}
于 2012-10-14T13:56:32.353 に答える