在C+中使用动态加载重新加载库+; 如果我使用C++中的动态加载打开一个库,我能以后再加载那个相同库的更新版本吗?我会自己测试这个,但我很好奇它的可行性,然后才开始研究它作为我正在研究的东西的潜在解决方案

在C+中使用动态加载重新加载库+; 如果我使用C++中的动态加载打开一个库,我能以后再加载那个相同库的更新版本吗?我会自己测试这个,但我很好奇它的可行性,然后才开始研究它作为我正在研究的东西的潜在解决方案,c++,dlopen,dynamic-loading,C++,Dlopen,Dynamic Loading,如果有区别的话,我是在Linux上运行的。能够让它在其他操作系统上工作是很好的,但这不是一项要求。从技术上讲,你肯定能做到——没有什么可以阻止你这样做。这就是dlopen()/dlclose()在用户空间中的工作方式。这也是内核加载和卸载动态模块的方式,等等。不过,实际上,写得不好的共享对象或主机程序可能会带来灾难性的副作用,导致进程(或者内核,如果你说的是内核模块)无法使用。如前所述,这应该可以工作。关于< C++ >代码> >代码> dLCONT/ C++中的干净用法,你应该看看这个答案。我

如果有区别的话,我是在Linux上运行的。能够让它在其他操作系统上工作是很好的,但这不是一项要求。

从技术上讲,你肯定能做到——没有什么可以阻止你这样做。这就是
dlopen()/dlclose()
在用户空间中的工作方式。这也是内核加载和卸载动态模块的方式,等等。不过,实际上,写得不好的共享对象或主机程序可能会带来灾难性的副作用,导致进程(或者内核,如果你说的是内核模块)无法使用。

如前所述,这应该可以工作。关于< C++ >代码> >代码> dLCONT/<代码> C++中的干净用法,你应该看看这个答案。

我没有理由在用你的实际代码测试之前不能用<代码> hello World <代码>测试它。这不会超过5分钟。因为我以前没有使用过动态加载,我想确保没有我没有预见到的情况。一些最严重的错误是,在基本测试之后,事情似乎运行正常,然后由于不可预见的情况而出现故障。请确保在卸载库之前,库已(1)返回所有操作系统资源(2)删除所有分配的内存(3)删除库中的所有指针。谢谢。我一定会注意这些事情。