2011-09-28 20 views
8

OS Xでは、実行時にロードされたパスをdylibのコードでどのように見つけることができますか?実行時に自分のdylibへのパスを取得するにはどうすればよいですか?

Windowsの背景から、私はGetModuleFileName(dllHandle,...)に電話をかけることができます。

NSGetExecutablePath()が存在し、現在のプロセスの実行可能ファイルのパスがわかります。私に現在のdylibパスを与える同等物はありますか?

+0

+1このページに私をもたらした問題の解決策を挙げてください。 –

答えて

11

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); 
    } 
} 
+0

パーフェクト、ありがとう。 – snowcrash09

関連する問題