2013-01-17 70 views
3

如果我使用C++中的动态加载打开库,以后可以重新加载该库的更新版本吗?我会自己测试一下,但我很好奇它的可行性,然后才开始将这看作是我正在开发的某个潜在解决方案。在C++中使用动态加载重新加载库

如果它有所作为,我在Linux上运行。能够使其在其他操作系统上工作会很好,但不是必需的。

+0

我看不出有什么理由不能在用你的实际代码测试之前用'Hello world'测试它。它不能超过5分钟。 –

+0

因为我以前没有在动态加载过程中工作过,所以我想确保没有我没有预见到的情况。一些最糟糕的错误是当基本测试后,事情似乎正常运行,然后由于不可预见的情况而发生故障。 – user396404

+2

确保库已经(1)返回了所有的操作系​​统资源(2)删除了所有分配的内存(3)在卸载库之前,删除了库中的所有指针。 –

回答

3

从技术上讲,你当然可以 - 没有什么能阻止你这样做。这是dlopen()/dlclose()在用户空间中的工作方式。这也是内核如何加载和卸载动态模块等。实际上,编写不佳的共享对象或主机程序可能会导致渲染进程的灾难性副作用(或内核,如果您正在讨论内核模块)无法使用。