2013-01-17 67 views
3

如果我使用C++中的動態加載打開庫,以後可以重新加載該庫的更新版本嗎?我會自己測試一下,但我很好奇它的可行性,然後纔開始將這看作是我正在開發的某個潛在解決方案。在C++中使用動態加載重新加載庫

如果它有所作爲,我在Linux上運行。能夠使其在其他操作系統上工作會很好,但不是必需的。

+0

我看不出有什麼理由不能在用你的實際代碼測試之前用'Hello world'測試它。它不能超過5分鐘。 –

+0

因爲我以前沒有在動態加載過程中工作過,所以我想確保沒有我沒有預見到的情況。一些最糟糕的錯誤是當基本測試後,事情似乎正常運行,然後由於不可預見的情況而發生故障。 – user396404

+2

確保庫已經(1)返回了所有的操作系​​統資源(2)刪除了所有分配的內存(3)在卸載庫之前,刪除了庫中的所有指針。 –

回答

3

從技術上講,你當然可以 - 沒有什麼能阻止你這樣做。這是dlopen()/dlclose()在用戶空間中的工作方式。這也是內核如何加載和卸載動態模塊等。實際上,編寫不佳的共享對象或主機程序可能會導致渲染進程的災難性副作用(或內核,如果您正在討論內核模塊)無法使用。