VC6.0 下SNMP++的开发环境设置

链接库编译

SNMP++是HP公司开发的一款开源SNMP库,可以从http://www.agentpp.com/免费下载,下载下来为源代码,因此需要进行先编译才能使用。

当前SNMP++的版本为SNMP++v3.2.25,如果需要支持SNMPv3,还要下载LIBDES-l-4.01a,下面开始进行链接库的编译。

1.先下载这两个压缩文档,并进行解压,解压后目录为snmp++v3.2.25和libdes-l-4.01a

2.在VC6.0中创建一个Win32 Static Library空项目snmp_pp,如下图所示

VC6.0 下SNMP++的开发环境设置_第1张图片

3.添加下载的两个文档的源文件和头文件到项目中,即snmp++v3.2.25/snmp++/src目录中的.cpp文件,snmp++v3.2.25/snmp++/include/snmp_pp目录中的.h文件以及libdes-l-4.01a/libdes目录中的.c,.h文件。

4.设置工程编译环境,即工程-》选项,设置如下

VC6.0 下SNMP++的开发环境设置_第2张图片

5.设置snmp++头文件所在目录,工具-》选项,具体如下图所示

VC6.0 下SNMP++的开发环境设置_第3张图片

6.如果直接这样编译,仍然会出现如下的错误

D:/Loaddown/snmp++v3.2.25/snmp++/src/auth_priv.cpp(286) : error C2371: 'i' : redefinition; different basic types
        D:/Loaddown/snmp++v3.2.25/snmp++/src/auth_priv.cpp(267) : see declaration of 'i'

需要对其中的一个变量进行改名,将文件auth_priv.cpp文件中的循环改为

for (int m = 0; m < auth_size; m++)
    auth[m] = 0;

7.点击 组建[snmp_pp.lib],即可生成snmp_pp.lib

8.将生成的snmp_pp.lib复制到Microsoft Visual Studio/VC98/Lib文件夹下

验证程序

1.创建一个控制台空项目,并添加一个.cpp源文件

2.在工程设置中添加库模块: snmp_pp.lib ws2_32.lib ,如下图所示

3.输入源程序

#include <iostream>
#include <winsock2.h>
#include "snmp_pp.h"
using namespace std;

#define SYSDESCR    "1.3.6.1.2.1.1.1.0"
#define SYSOBJECTID "1.3.6.1.2.1.1.2.0"
#define SYSCONTACT  "1.3.6.1.2.1.1.4.0"

int main(int argc,char **argv)
{
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;
    wVersionRequested=MAKEWORD(1,1);
    err=WSAStartup(wVersionRequested,&wsaData);
    if(err!=0)
    {
        return 1;
    }
    if(LOBYTE(wsaData.wVersion )!=1||HIBYTE(wsaData.wVersion)!=1)
    {
        WSACleanup();
        return 1;
    }
    int status;
    Vb vb[3];
    Pdu pdu;
    vb[0].set_oid(SYSDESCR);
    vb[1].set_oid(SYSOBJECTID);
    vb[2].set_oid(SYSCONTACT);
    pdu.set_vblist(vb,3);
    CTarget ctarget((IpAddress)"127.0.0.1");
    Snmp snmp(status);
    if((status=snmp.get(pdu,ctarget))!=SNMP_CLASS_SUCCESS)
        cout<<snmp.error_msg(status)<<endl;
    else
    {
        pdu.get_vblist(vb,3);
        for(int i=0;i<3;i++)
            cout<<vb[i].get_printable_value()<<endl;
    }
    return 0;
}

你可能感兴趣的:(Microsoft,basic,文档,vb,library,iostream)