2011-09-28 27 views
8

Trên OS X, làm thế nào có thể mã trong một dylib tìm đường dẫn nó được tải từ, lúc chạy?Làm cách nào để truy xuất đường dẫn đến dylib của tôi khi chạy?

Đến từ nền Windows, tôi đang sử dụng có thể gọi GetModuleFileName(dllHandle,...).

Có tồn tại NSGetExecutablePath() sẽ cung cấp cho tôi đường dẫn của tệp thực thi cho quy trình hiện tại. Có tương đương để cho tôi con đường dylib hiện tại không?

+0

+1 để đề cập đến NSGetExecutablePath, giải pháp cho sự cố đưa tôi đến trang này. –

Trả lời

11

Sử dụng dladdr(3). Với một địa chỉ bộ nhớ, dladdr() xuất ra một cấu trúc có, giữa các dữ liệu khác, đường dẫn của thư viện chứa địa chỉ. Ví dụ: bên trong thư viện của bạn:

#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

Hoàn hảo, cảm ơn. – snowcrash09

Các vấn đề liên quan