2011-09-28 6 views
8

OS X에서는 런타임에로드 된 경로를 dylib에서 어떻게 찾을 수 있습니까?런타임시 내 dylib의 경로를 어떻게 검색합니까?

Windows 백그라운드에서 나와서 GetModuleFileName(dllHandle,...)으로 전화를 걸었습니다.

현재 프로세스의 실행 파일 경로를 알려주는 NSGetExecutablePath()이 있습니다. 현재의 dylib 경로를 알려주는 등가물이 있습니까?

+0

+1, NSGetExecutablePath를 언급하면이 페이지로 연결되는 문제를 해결할 수 있습니다. –

답변

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

관련 문제