共享库的动态链接或动态加载

Dynamic linking or dynamic loading for shared libraries?

本文关键字:动态 加载 链接 共享      更新时间:2023-10-16

我不知道哪种解决方案最适合将模块链接到二进制文件。通过动态链接或使用 DL API 动态加载。

知道 :

    我们可以
  1. 为编译指定一个标志,指示您是否要使用要链接的库的功能(例如,我们可以 #ifndef MODULE 中执行此操作)。
  2. 库函数在运行时仅使用一次。

如果需要其他信息,请不要犹豫。

你最好的答案是"视情况而定"。

例如,如果您的平台有大量可用内存,那么在执行之前加载所有外部库是有意义的。

如果在开始时将所有库加载到内存中需要花费大量时间,则可能需要按需将所有库加载到内存中。

如果平台没有大量内存,按需加载更有意义(不要加载不常用的库并保留在内存中)。

在打包到 DLL 之前,您可能需要考虑函数的使用频率。