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

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

 

依照惯例,先感谢

@hankern

学习链接来于https://blog.csdn.net/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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值