2010-11-04 59 views
2

我想找到系統(如果有的話)特定庫 的路徑,現在我有一個內置插件路徑:如何以編程方式查找動態庫文件的位置?

dllNameFrodo = "/usr/local/frodo/lib/libfrodo.dylib"; 

,但當然是醜陋的,不便於攜帶。

任何想法?

+2

他們可以在任何地方。這些系統中的每一個都有一些鬆散的慣例,但是沒有辦法一般地定位它們。 – bmargulies 2010-11-04 18:19:11

回答

1

,而不是試圖裝入一個硬編碼的路徑,無論是與你的應用程序在本地打包庫,所以你知道它的安裝,或者更好的,只是讓運行時加載器查找並自動加載它。這樣用戶可以擺弄LD_LIBRARY_PATH和LD_PRELOAD來選擇要加載的版本。

1

這就像搜索任何類型的文件 - 給它的名稱或延伸和從哪裏開始searching-一些提示,所以如果你想要的是一個可移植的方式來搜索你有2個解決方案:

  1. 使用boost::filesystem
  2. 構建一些搜索功能,並使用特定於平臺的功能,每個平臺上實現一次。提示:這就是boost :: filesystem--頂部有糖,但如果你不想或不能使用boost,那麼它是唯一的「便攜」選擇。
0

在Windows上,您可以使用FindFirstFile和家人。

這是非常專業的需求 - 便攜的實現可能很難找到,在任何情況下要使用下面特定平臺的API,如果它要上的所有最佳。

相關問題