2011-10-27 37 views
0

我有.so文件,它們內部使用一些STL容器。 問題是我有興趣卸載.so的X版本並將其替換爲.so的Y版本,但不會丟失數據。如果數據只是原始內存,我可以在切換時轉發指針,但我想使用常規的STL容器。有沒有辦法做到這一點。只要包含的數據可以傳輸,複製就不成問題。 當我卸載舊的.so時,還會激活靜態析構函數嗎?如何在運行時更新.so文件時傳輸STL容器數據

回答

2

1)讓X.so將數據保存到文件(帶有版本號!),卸載X.so,加載Y.so,讓Y.so加載文件中的數據。
2)使用版本名稱,加載兩者,讓Y.so直接從X.so的容器中填充它的容器(檢查版本號!),然後卸載X.so.

我真的不建議直接傳遞容器,好像ABI由於任何原因不兼容,它會很好的編譯,但是會在運行時崩潰。這也使得故意改變ABI更容易。

+1

是的,有時間找到[一個很好的序列化庫](http://www.boost.org/libs/serialization/)。 – ildjarn