官方下载:https://sourceforge.net/projects/net-snmp/
版本:本次下载使用为目前的最新版本 5.9.4.rc1
编译步骤:
一、下载后解压,即可见到如下界面
二、
进入win32文件夹,找到win32.dsw
,双击用vs打开,会自动转为win32.sln
,进入如下界面
在libsnmp项目上单击右键,设置为启动项目。(因为这是net-snmp的库项目,其他项目依赖于这个项目)。我这里只想使用libsnmp
库进行编程,snmpwalk
库用于测试。
三、踩坑:
首先编译生成libsnmp
,无问题。接着编译snmpwalk
遇到如下错误:
这里其实是两个问题引起的:
1、在Windows上使用asprintf(),根据下面的连接,自己写了个myprint.h添加到libsnmp项目,在mib.c中加入#include “myprint.h”,解决
https://www.oomake.com/question/12234603
myprint.h内容如下
#pragma once
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-features.h>
#include <stdio.h>
#include <ctype.h>
#include <sys/types.h>
#include <stdarg.h>
#include <stdlib.h>
int vasprintf(char **strp, const char *fmt, va_list ap)
{
// _vscprintf tells you how big the buffer needs to be
int len = _vscprintf(fmt, ap);
if (len == -1)
{
return -1;
}
size_t size = (size_t)len + 1;
char *str = malloc(size);
if (!str)
{
return -1;
}
// _vsprintf_s is the "secure" version of vsprintf
int r = vsprintf_s(str, len + 1, fmt, ap);
if (r == -1)
{
free(str);
return -1;
}
*strp = str;
return r;
}
int asprintf(char **strp, const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
int r = vasprintf(strp, fmt, ap);
va_end(ap);
return r;
}
2、netsnmp_bindtodevice
、netsnmp_parse_ep_str
两个函数未定义,经查看,在libsnmp
中有部分代码使用了该函数,该函数声明在snmpIpBaseDomain.h
中,定义在snmpIpBaseDomain.c
,但实际项目中未添加该文件,右键添加现有项,文件位置
将上面两处更改完后,重新编译libsnmp
,然后编译snmpwalk
,成功。
四、64位编译
由于我本身使用的项目为64位,刚才的库编译为32位,需重新编为64,更改如下配置,
右键-》属性-》配置管理器,新建平台,如下,然后重新编译
五、使用
1、如下路径找到该文件,拷贝至自己的项目,记得在链接器中引用,如何引用lib文件就不在赘述。
2、拷贝头文件
拷贝net-snmp文件夹至自己的项目,路径如下
继续从另外路径拷贝,至同样目录,默认全部替换,即可
------------------- ---------------------------分割线--------------------------------------------------------
在遇到上述问题后,期间用比较老的版本编译了下,没有出现上述错误,但需要做一些小改动,记录如下
版本: 5.7.3
1、net-snmp-5.7.3\win32\net-snmp\net-snmp-config.h
该文件红框部分删掉,不然报错,并且看了看最新版没有这段代码,并且是这个
#if defined(_MSC_VER) && _MSC_VER < 1900
#define snprintf _snprintf
#endif
我看了我的_MSC_VER
版本是1929,看样子不会走该逻辑
2、···找不到了,记得是某处重定义了,注释其中一处即可
参考链接:https://blog.csdn.net/zzidea/article/details/61422717
六、自己编译的资源链接
https://download.csdn.net/download/qq_45988470/88158389?spm=1001.2014.3001.5501