2011年5月15日星期日

  snmp++开发包开发基于snmp的ups监控程序

受老师之命开发一个基于snmp的网络监控程序。作为snmp的初学者,在完成的过程中参考了很多前人的经验,也走了一些弯路。在此将学习过程记录下来。

1.基于snmp的开发包有net-snmp和snmp++、agent++等,在此使用snmp++开发。首先编译snmp++的开发包。生成它的.lib文件。

 

首先从官网(http://www.agentpp.com/snmp_pp3_x/download_snmp_ppv3/download_snmp_ppv3.html

LIBDES-l-4.01a    SNMP++v3.2.25       MS VC++7.0 Project Files下载下来放在一个文件夹里。

建立一个生成名为snmp_pp的静态库工程。

QQ截图未命名 QQ截图未命名

将上一步解压的的三个文件拷贝到工程目录下。

HN9{X}LXJE}B1N2NYCQL]QS

打开工程。在头文件目录下添加现有项,添加的是开发包给的头文件。

~{WAPDKN~`10(0HK`{BO3A56V2~8R7V`H6UVOJ9U``6EPPUI0R@$(M~P]%DXY%EL1(ZGJ

在源文件目录下添加现有项,即开发包里的.c和.cpp文件。

2D@@8CE}@{}K4JH$510M~]0{T(IRST02ZZKZNKUR96W`IN@%[G367J)5Z}2T0EX_GX51O

设置工程头文件的包含目录(使用相对路径,便于移植)

22C7W`VOCIGW14B~U8O9FMG

由于不需要提示bebug信息,故打开config_snmp_pp.h 文件,将#define _NO_LOGGING宏定义打开。

HE8G8VLQ(2OU[_N3OHB6PC1

ok,编译,木有错!

运行。出现

UT22GPOJY{WD(@}CIZQ}PIG

 

取消即可。然后在工程的debug目录下就生成了snmp++包的snmp_pp.lib文件。第一步工作完成!

第二步。生成实现监控功能的DLL,供上层程序调用。

首先新建一个名为UPS的DLL工程

$[NPU1CZJECJ8%4GH}WWW}4点击完成。

然后将上一步生成的snmp_pp.lib添加到项目中,在项目的属性配置中添加对库的依赖。

VVAG1XU{Y7IR~V$LCVA5R)U

将snmp++\include\snmp_pp 文件夹拷贝到工程的项目目录下,在项目头文件文件夹下通过添加现有项将这些头文件加入。

B4_H3YAHF{{VTX8@)5A]SMB

新建UPS.h头文件,打开该文件将需要导出的函数的函数头在这里声明。

G}KHB%7}BSLD]SF]X`){BYX

将实现这些函数的代码添加到UPS.cpp文件中。这里注意添加两个头文件

#include "snmp_pp/snmp_pp.h"
#include "Ups.h"

其他头文件视程序需要而加。代码不再贴。

接下来就是编译了,没有错误。运行,出现

(MO[9BCUZQ(U{AESPO8XBOW

 

此时可以在工程目录的debug文件夹中看到生成的UPS.lib和UPS.DLL文件。有了他们就可以提供给别人调用了。第二步完成!

第三步,写一个简单的程序测试DLL的调用效果。

新建一个项目

%NIR08_%R0{@X(0H@{S}N8P[4]

将UPS.lib,UPS.DLL,UPS.h拷贝到工程的项目目录下。将UPS.h添加到头文件文件夹中。在配置属性中添加UPS.lib

F)%P}W$3G1_C1Q`OKRP~6TH

在源文件文件夹中添加UPS_Test.cpp源文件,在mian函数中调用UPS.dll的导出函数

99PJC4UE3QNA07LOKRDE_TG

编译并运行,结果如下:

}7VEERDNRJGNIOVRPW{F7C4

至此,整个过程结束。

没有评论:

发表评论