OS Xでは、実行時にロードされたパスをdylibのコードでどのように見つけることができますか?実行時に自分のdylibへのパスを取得するにはどうすればよいですか?
Windowsの背景から、私はGetModuleFileName(dllHandle,...)
に電話をかけることができます。
NSGetExecutablePath()
が存在し、現在のプロセスの実行可能ファイルのパスがわかります。私に現在のdylibパスを与える同等物はありますか?
OS Xでは、実行時にロードされたパスをdylibのコードでどのように見つけることができますか?実行時に自分のdylibへのパスを取得するにはどうすればよいですか?
Windowsの背景から、私はGetModuleFileName(dllHandle,...)
に電話をかけることができます。
NSGetExecutablePath()
が存在し、現在のプロセスの実行可能ファイルのパスがわかります。私に現在のdylibパスを与える同等物はありますか?
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);
}
}
パーフェクト、ありがとう。 – snowcrash09
+1このページに私をもたらした問題の解決策を挙げてください。 –