2011-09-28 4 views
8

En OS X, ¿cómo puede el código en un dylib encontrar la ruta desde la que se cargó, en tiempo de ejecución?¿Cómo recupero la ruta a mi dylib en tiempo de ejecución?

Viniendo de un fondo de Windows, estoy acostumbrado a llamar al GetModuleFileName(dllHandle,...).

Existe NSGetExecutablePath() que me dará la ruta del ejecutable para el proceso actual. ¿Hay un equivalente para darme la ruta actual de dylib?

+0

+1 por mencionar NSGetExecutablePath, la solución al problema que me trajo a esta página. –

Respuesta

11

Use dladdr(3). Dada una dirección de memoria, dladdr() genera una estructura que tiene, entre otros datos, la ruta de la biblioteca que contiene la dirección. Por ejemplo, dentro de su biblioteca:

#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

Perfecto, gracias. – snowcrash09

Cuestiones relacionadas