2011-09-28 18 views
8

OS X'de, bir dlllib dosyasındaki kod, çalışma zamanında nasıl yüklendiğini nasıl bulabilir? Windows arka plandan geliyorÇalışma zamanında dylib yolumu nasıl alabilirim?

, ben GetModuleFileName(dllHandle,...) aramak için güçlü olmak alışkınım.

bana şu anki süreç için yürütülebilir yolunu verecek NSGetExecutablePath() söz konusudur. Bana mevcut dylib yolunu vermek için bir eşdeğer var mı?

+0

+1. –

cevap

11

dladdr(3)'u kullanın. Bir bellek adresi verildiğinde, dladdr(), diğer verileri yanında, adresi içeren kütüphanenin yolunu da içeren bir yapı üretir. Örneğin, kütüphane içinde: NSGetExecutablePath bu sayfaya getirdi beni sorununa çözüm söz için

#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

Mükemmel, teşekkürler. – snowcrash09