gpt4 book ai didi

c++ - 运行时更新.so文件时如何传输STL容器数据

转载 作者:行者123 更新时间:2023-11-28 03:45:01 25 4
gpt4 key购买 nike

我有 .so 文件,其中使用了一些 STL 容器。问题是我对实时卸载 .so 的 X 版本并将其替换为 .so 的 Y 版本感兴趣,但不会丢失数据。如果数据只是原始内存,我可以在切换时转发指针,但我想使用常规的 STL 容器。有什么办法吗。复制是没有问题的,只要里面的数据可以传输就行。当我卸载旧的 .so 时,静态析构函数也会被激活吗?

最佳答案

1) 让 X.so 将它的数据保存到一个文件(带有版本号!),卸载 X.so,加载 Y.so,让 Y.so 从文件加载数据。
2) 改用版本名称,加载两者,让 Y.so 直接从 X.so 的容器中填充它的容器(检查版本号!),然后卸载 X.so。

我真的不建议直接传递容器,因为如果 ABI 出于任何原因不兼容,它会编译得很好,但在运行时会崩溃。这也使得故意更改 ABI 变得更加容易。

关于c++ - 运行时更新.so文件时如何传输STL容器数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7920448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com