2011-09-28 13 views
8

ओएस एक्स पर, एक डाइलीब में कोड कैसे रनटाइम पर लोड किया गया पथ ढूंढ सकता है?मैं रनटाइम पर अपने डाइलिब के पथ को कैसे पुनर्प्राप्त करूं?

विंडोज पृष्ठभूमि से आ रहा है, तो मैं GetModuleFileName(dllHandle,...) पर कॉल करने में सक्षम हूं।

NSGetExecutablePath() मौजूद है जो मुझे वर्तमान प्रक्रिया के लिए निष्पादन योग्य मार्ग प्रदान करेगा। क्या मुझे वर्तमान डिलिब पथ देने के बराबर है?

+0

+1 NSGetExecutablePath का उल्लेख करने के लिए +1, जिस समस्या ने मुझे इस पृष्ठ पर लाया था, उसका समाधान करने के लिए +1। –

उत्तर

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