1

Windows と Linux の両方のプラットフォームで、共有ライブラリ内の関数呼び出し内から共有ライブラリ ファイルの場所を特定する方法があるかどうか教えてください。Linux と Windows の両方でコンパイルおよび実行される C で書かれた共有ライブラリがあります。関数を使用して共有ライブラリの現在の場所を特定できるようにしたいので、一部の構成ファイルやその他のファイルの場所を特定できます。

これを行う方法を検索しましたが、今は答えが見つかりませんが、プラットフォーム固有の方法でこれを行う方法を説明した記事を見たことは確かです。

4

1 に答える 1

1

Windows では、次を使用GetModuleFileName()して DLL のフル パスを取得できます。

char path[MAX_PATH];
if (GetModuleFileName(GetModuleHandle("kernel32.dll"), path, MAX_PATH) &&
    ERROR_INSUFFICIENT_BUFFER != GetLastError())
{
    char* last_slash = strrchr(path, '\\');
    if (last_slash) *last_slash = 0;
    printf("path=[%s]\n", path);
}

出力:

パス=[C:\WINDOWS\system32]

于 2012-12-11T11:18:43.473 に答える