博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
获取activemq-cpp.dll的版本号
阅读量:6540 次
发布时间:2019-06-24

本文共 1260 字,大约阅读时间需要 4 分钟。

获取activemq-cpp.dll的版本号

需求

因产品的平台库中的dll被未知人员修改,导致产品在使用activemq-cpp.dll取activemq的消息时,程序异常!经调试及测试,发现是修改后的dll存在问题(更换为未修改的产品的平台库中的的activemq-cpp.dll后,不再异常);需要重新编译该dll,但是因平台库之前的管理不完善,没有保存该dll的版本信息,需要使用之前相同的版本,否则所有依赖该dll的功能都需要重新测试,工作量大;或者更换为可用的dll,但平台管理员仍然需要版本号

解决过程

  1. 查看其依赖的库“libapr”的头文件,发现有一个名为“apr_version.h”,打开文件,如图:版本号
    在网上查过该库的源码就知道apr的版本号的组成为“1.5.2”,说明平台中使用的apr的版本就是1.5.2
  2. 同理,去查看activemq-cpp的头文件(或者源文件),很遗憾,没用以version结尾的头文件,此方法失效?使用“version”关键词在activemq-cpp的头文件(或者源文件)中查找,如图查找version
    查找结果,如图:这里写图片描述,在网上下载任一个版本的源码,查看实现,发现,getProviderVerdion()中返回的是activemq-cpp库的版本号的全称。
  3. 现在知道是什么函数了,说明在没有源码的情况下,只有运行起来,才能知道版本号了,可是怎么调用呢?查看这个类的注释,如图这里写图片描述
    调试过onmessage函数时,发现,要接受消息需要先创建连接,而这个连接就是“ActiveMQConnection”。这表明需要在初始化的时候添加测试代码。如图:这里写图片描述
    得到我需要的版本号:3.8.4;

延伸思考

  1. 一个库需要有明显的版本号,像APR的库一样,应该在头文件中可以直接查看。
  2. 一个库需要有运行时可查询版本号的接口,以保证产品的兼容性。
  3. 回到问题产生的原因上来,这个问题由平台调整引起,应该由平台负责人解决此问题,问题在定位后,应该转给他们,而不是我这边去查找版本号,编译文件什么的。换言之,这不是我的职责所在。
  4. 作为平台的管理者,不知道自己提交的dll是什么版本?这也是理由?既然不知道版本,当初你凭什么敢为何提交?
  5. 没有完备的测试体系,不能随便修改平台的内容,否则,整个产品都遭殃,或者你有足够的人力去把所有的功能都测试一遍!
  6. 除了dll库需要有完整的版本信息外,存储的数据,也应该有相应的版本信息,以便多个版本间的产品能够兼容!
  7. 兼容性,太重要,没有谁愿意去重写以前的代码,或者把以前的配置,在你的新产品上重新配置一遍!
  8. 要搞清楚自己的职责,不在职责范围内的事,就不要做了,一来,你不一定能做好,二来,你做好了,也没人感激你,三来,有这个时间,你提升下自己的能力吧,看你闲的。
  9. 疑人不用,用人不疑!要相信别人可以做好,不知道怎么做,就教他好了!千万别临阵易将,给人的感觉应该很不好!

转载于:https://www.cnblogs.com/FairlyHarmony/p/9568007.html

你可能感兴趣的文章
第一次软件工程作业
查看>>
Chapter 2 C#语句---选择语句
查看>>
centos7.5 下编译安装PHP7.2
查看>>
CF1096E The Top Scorer
查看>>
PNG透明兼容IE6的几种方法(转)
查看>>
Python爬虫(一)
查看>>
Eclipse中tomcat启动时提示java.lang.ClassNotFoundException: XXX class
查看>>
10项可用性结论与指南
查看>>
linux EXT4格式分区扩容
查看>>
Theano:LSTM源码解析
查看>>
MyPython-->进阶篇-->测试代码
查看>>
Docker容器安装
查看>>
attr和prop的区别 chosen插件
查看>>
Linux入门学习教程:虚拟机体验之KVM篇
查看>>
天池大数据周冠军分享|附移动推荐算法赛答辩会Top5选手PPT
查看>>
HDU 2870 Largest Submatrix
查看>>
HTML5 图片缩放功能
查看>>
VirtualBox 4.2 released !
查看>>
Windows线程同步API
查看>>
内存调试技巧
查看>>