共享库的动态链接或动态加载
Dynamic linking or dynamic loading for shared libraries?
我不知道哪种解决方案最适合将模块链接到二进制文件。通过动态链接或使用 DL API 动态加载。
知道 :
- 我们可以
- 为编译指定一个标志,指示您是否要使用要链接的库的功能(例如,我们可以 #ifndef MODULE 中执行此操作)。
- 库函数在运行时仅使用一次。
如果需要其他信息,请不要犹豫。
你最好的答案是"视情况而定"。
例如,如果您的平台有大量可用内存,那么在执行之前加载所有外部库是有意义的。
如果在开始时将所有库加载到内存中需要花费大量时间,则可能需要按需将所有库加载到内存中。
如果平台没有大量内存,按需加载更有意义(不要加载不常用的库并保留在内存中)。
在打包到 DLL 之前,您可能需要考虑函数的使用频率。
相关文章:
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 在 Linux 平台的 C++ 中动态加载 DLL
- 在Qt C++单元测试中动态加载QQuickWindow而不是QQuickWidget
- 从动态加载的 dll 内部调用C++函数
- C/C++函数动态加载器(helper)
- 从动态加载的库中记录日志
- 如何将LLDB附加到C# .NET进程并调试动态加载的macOS捆绑包?
- 如何动态加载和调用具有特定于库的类型作为函数参数的符号
- OpenGL 中的动态加载着色器毫无意义吗?
- 使用动态加载库时静态变量为空
- 在动态加载的位置无关的可执行文件中分离错误
- ASAN 检测与动态加载库共享的类的 vtable 的 ODR 违规
- 运行时动态加载库时出错"unresolved external symbol"
- 使用dlopen动态加载共享库
- LDD可执行OUPUT中没有动态加载库
- 调试Android Studio中动态加载的本机库
- C++ 动态加载 DLL 错误
- 动态加载库和运行时误解的显式链接
- 通过在C 中动态加载的LIB分配的基础级指针上调用删除的安全性
- mbed uvisor 动态加载二进制文件