13

OS Xでは、実行時にdylibのコードがロード元のパスを見つけるにはどうすればよいですか?

Windows のバックグラウンドを持っているので、 を呼び出すことができることに慣れていますGetModuleFileName(dllHandle,...)

NSGetExecutablePath()現在のプロセスの実行可能ファイルのパスを教えてくれるものが存在します。現在のdylibパスを教えてくれるものはありますか?

4

1 に答える 1

15

dladdr(3)を使用します。メモリアドレスを指定すると、dladdr() は、他のデータとともに、アドレスを含むライブラリのパスを含む構造体を出力します。たとえば、ライブラリ内で次のようにします。

#include <stdio.h>
#include <dlfcn.h>

void test(void) {
    Dl_info info;
    if (dladdr(test, &info)) {
        printf("Loaded from path = %s\n", info.dli_fname);
    }
}
于 2011-09-29T16:10:25.013 に答える