调试osgEarth加载动态插件过程(三)

本文详细介绍了如何在osgEarth中创建和加载.earth插件的过程。首先,通过检查文件扩展名并将其转换为小写,然后在_extAliasMap中查找。如果找不到,会创建新的插件,如osgdb_osgearthd.dll。接着,通过遍历指定的文件夹,根据操作系统类型转换路径格式,搜索并加载插件,如osgearthd.dll。最后,执行动态库中的注册代码,将插件添加到_rwList中。整个过程涉及动态库加载、文件查找和注册等关键步骤。

很久没更新了,这段时间, 把osgdb抄了一遍。以前分析的很多都是osgdb的内容,因为不熟啊,所以索性抄一遍。以便把精力集中在osgearth上。

 

依照惯例,先感谢

@hankern

学习链接来于https://blog.youkuaiyun.com/hankern/article/details/83933347

好好学习,好好调试就是对博主最大的尊重了。博主都已经列出来了,再不好好调试学习,就说不过去了。

继续调试。

这节主要是两部分

1,如何创建插件

2,如何加载插件。

 

这里的插件就是.earth。

先看1,如何创建插件,调试过去

上节也是调到了这里createLibraryNameForFile()

这里就是看如何创建.earth加载插件

 

找扩展名

找到了扩展名earth,先归为小写

 

如果在_extAliasMap里,则直接创建

_extAliasMap的内容有什么呢?

从下面可以发现是如何添加的

什么时候添加的?先设置个断点。回头再看。

然后就继续往下走,

没有找到,则创建

组合起来

接下来就是如何加载

先在_dList里寻找,这里是空

然后加载插件全名

先找文件夹

 

在这些文件夹里找插件

查看是unix还是windows形式,即左划还是右双斜

转换成windows形式

格式转换后,再次进入该函数,

查看是否插件存在

 

下一步就是进行加载osgearthd.dll了

执行动态库中的注册代码

注册代码是个静态函数的宏

及执行RegisterReaderWriterProxy的构造函数

这个T是个模板,加载的是.osgdb_earthd.dll.

然后添加到_rwList中

_rwList有很多,是什么时候加载的呢?重新启动

先看以前的_extAliasMap,初始化时机

 

总结下,这节主要是进行了创建osgdb_osgearthd.dll,并且加载。

再次感谢@hankern

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值