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

问题描述:

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

知道了:

  1. 我们可以指定指示是否要使用或不图书馆的功能链接(我们可以做,例如的#ifndef MODULE)汇编的标志。
  2. 库函数在运行时仅使用一次。

如果需要更多信息,请不要犹豫。

+1

只有您的程序可以在没有库的情况下运行,动态加载才有意义。 – Siguza

+0

库函数是否仅在程序的开始时使用?例如,您可以将库函数作为可执行文件运行,然后使用'exec()'替换进程来运行主应用程序(以params的形式向您提供相关信息)? – Galik

+0

太宽泛。试着张贴一个例子,并指定_best_的含义:根据什么? – LPs

你最好的答案是“这取决于”。

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

如果在开始时将所有库加载到内存中需要很长时间,您可能需要将库加载到内存中。

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

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