顾名思义,在运行时动态的加载动态库,就是我们有若干个动态库,但是程序启动的时候这些动态库并不会被直接加载到内存中,而是在程序运行的过程中根据实际需要,选择合适的动态库加载到内存中。
运行时动态的加载动态库是一种很常见也很有用的技术,主要用在
- 插件
- 模块化程序
- 热更新
boost库中有一个叫做dll的库,我们可以使用这个库实现在程序运行时动态加载动态库,Linux和Windows系统本身也有一些系统调用可以使用,但是使用boost的dll库可以跨平台,我们来看几个具体demo,环境是VS2022,建议实际测试一下,这样理解的会比较深刻。
先看一下项目结构
其中demo项目是可执行程序,dll_demo项目是动态库,这个示例是参考了boost官方文档给的用法,也补充了一些内容,想要说明的内容都写在注释里了。
直接看代码
这个示例和示例一的结构一样,具体参考示例一就可以,这个示例也参考了boost官方文档给的用法,也补充了一些内容,想要说明的内容都写在注释里了,另外需要注意这个示例在执行时会崩溃,注释中也写了。
直接看代码
这个示例和示例一的结构一样,具体参考示例一就可以,这个示例是一种比较常规的用法,想要说明的内容都写在注释里了。
直接看代码
注意使用boost的dll库加载动态库时,不管是什么原因导致的动态库卸载之后(比如各种持有动态库的实例发生变化,以及各种原因),使用从卸载的动态库里导出的任何符号,都会导致程序崩溃。
到此这篇动态库的两种调用方式是什么(动态库中的函数怎么调用)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/haskellbc/43564.html