一、准备工作:
1、下载SNMP++ 3.3.11a
下载地址:https://www.agentpp.com/download.html
2、下载libdes
下载地址:https://www.agentpp.com/download.html
二、QT生成动态库.so
编译工具:
1、打开虚拟机,用QtCreator新建一个”C++ Library”项目
2、选择共享库,填上动态库名字
3、选择交叉编译器
4、模块选择
5、删除新建项目时自动产生的.cpp和.h文件;在项目文件中新建src,把下载的SNMP++ 3.3.11a中src文件夹的.cpp文件复制到新建项目的src中,并把新添加的文件添加到项目中
6、同理把SNMP++ 3.3.11a中的Include文件夹和libdes文件夹复制到项目目录中,Include文件夹除了.cpp和.h外其他文件删除,libdes文件夹中的文件可以不删除,重复上述步骤添加.cpp、.c和.h文件到项目中去。
7、删除自动生成文件后记得修改.pro文件中的内容,文件目录和.pro如下如所示
8、编译出现以下错误
解决方法:把SNMP++ 3.3.11a中的libsnmp.h复制到项目文件下
8、重新编译出现错误
解决方法:在.pro下添加头文件路径
9、重新编译,出现以下错误
解决方法:因我们使用的是libdes库,找到config_snmp_pp.h,在74行处修改为下图所示,若定义了HAVE_PTHREAD就添加pthread库
10、编译成功,可以在构建目录中看见生成.so动态库
三、eclipse CDT生成.so动态库
编译工具:Linux GCC
1、新建工程,File->New->C++ Project
2、把.cpp、.c和.h文件和libsnmp.h添加到项目目录下,其他后缀文件可以删除,刷新一下项目后可以看见新添加的目录与文件
3、添加头文件路径,右键项目名->Properties->C/C++ General->Paths and Symbols->Includes->GNU C++
4、编译后出现错误
解决方法:参考上文第9点
5、编译成功,在Debug目录下生成.so文件
四、使用注意事项
使用时可能会出现以下错误
原因是msec类里面存在一个静态私有成员,要对其初始化。