【发布时间】:2013-12-08 16:45:56
【问题描述】:
在运行 dylib 模块时,我正在尝试获取由另一个进程加载的插件包的可执行路径。
运行非插件包时,例如一个普通的应用程序,很容易调用
[[NSBundle mainBundle] executablePath]。但是,对于插件包,这将返回托管应用程序的路径,而不是插件包的路径。
在这种情况下,可以使用以下棘手的代码来获取可执行文件的路径:
#include <dlfcn.h>
const char* getExecutableFile()
{
Dl_info exeInfo;
dladdr((void*) getExecutableFile, &exeInfo);
return exeInfo.dli_fname;
}
这将返回正确的捆绑可执行文件的路径,除非从 dylib 导出的函数中调用此函数,它返回 dylib 的路径。
是否有任何方法可以一致地获取捆绑可执行文件的路径,即使是在调用不同模块中的函数时也是如此?
【问题讨论】: