1. 程式人生 > >win下snmp++編譯手記

win下snmp++編譯手記

snmp++

下載

SNMP++ 3.3.7
LIBDES-l-4.01a
MS VC++ 12 Project Files for SNMP++ 3.3.1/AGENT++ 4.0.2 or later

解壓參考

README WIN32

The Visual Studio 2013 project files require that the libdes, SNMP++,
AGENT++, and/or AgentX++ sources are extracted in the same directory
as the Visual Studio project files. The directory structure should
then look like (note: there must not be any version numbers in the
directory names):

common-root-dir |– libdes |– snmp++ |– agent++ |– agentx++
|– vs2013

Make sure, that you delete the file config_snmp_pp.h from the
snmp++\include\snmp_pp directory. Otherwise, the linked programs crash
on execution, because the different projects might have used different
versions of the config_snmp_pp.h file.

The file with the right (default) settings for the WIN32 platform is
located in vs2013\SNMP++\include\snmp_pp and included from there by
the VS project files.

To build the libraries, use this order:

  1. libdes (or openssh)
  2. SNMP++
  3. AGENT++
  4. AgentX++

VS新建解決方案

修改相應的工具集(Platform Toolset

),VS2013–v120,VS2010–v100
修改相應的字符集(Character Set),Use Multi-Byte Character Set

增加預處理巨集

HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;

增加標頭檔案目錄

$(SolutionDir)\..\..\snmp++\include;$(SolutionDir)\..\..\snmp++;$(SolutionDir)\..\..\libdes;

包含檔案

<ClInclude Include="..\..\..\snmp++\include\libsnmp.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\address.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\asn1.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\auth_priv.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\collect.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\config_snmp_pp.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\counter.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\ctr64.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\eventlist.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\eventlistholder.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\gauge.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\idea.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\integer.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\IPv6Utility.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\log.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\md5.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\mp_v3.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\msec.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\msgqueue.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\notifyqueue.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\octet.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\oid.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\oid_def.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\pdu.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\reentrant.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\sha.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\smi.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\smival.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\snmperrs.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\snmpmsg.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\snmp_pp.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\target.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\timetick.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\usm_v3.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\uxsnmp.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\v3.h" />
<ClInclude Include="..\..\..\snmp++\include\snmp_pp\vb.h" />
<ClInclude Include="..\include\config.h" />


<ClCompile Include="..\..\..\snmp++\src\address.cpp" />
<ClCompile Include="..\..\..\snmp++\src\asn1.cpp" />
<ClCompile Include="..\..\..\snmp++\src\auth_priv.cpp" />
<ClCompile Include="..\..\..\snmp++\src\counter.cpp" />
<ClCompile Include="..\..\..\snmp++\src\ctr64.cpp" />
<ClCompile Include="..\..\..\snmp++\src\eventlist.cpp" />
<ClCompile Include="..\..\..\snmp++\src\eventlistholder.cpp" />
<ClCompile Include="..\..\..\snmp++\src\gauge.cpp" />
<ClCompile Include="..\..\..\snmp++\src\idea.cpp" />
<ClCompile Include="..\..\..\snmp++\src\integer.cpp" />
<ClCompile Include="..\..\..\snmp++\src\IPv6Utility.cpp" />
<ClCompile Include="..\..\..\snmp++\src\log.cpp" />
<ClCompile Include="..\..\..\snmp++\src\md5c.cpp" />
<ClCompile Include="..\..\..\snmp++\src\mp_v3.cpp" />
<ClCompile Include="..\..\..\snmp++\src\msec.cpp" />
<ClCompile Include="..\..\..\snmp++\src\msgqueue.cpp" />
<ClCompile Include="..\..\..\snmp++\src\notifyqueue.cpp" />
<ClCompile Include="..\..\..\snmp++\src\octet.cpp" />
<ClCompile Include="..\..\..\snmp++\src\oid.cpp" />
<ClCompile Include="..\..\..\snmp++\src\pdu.cpp" />
<ClCompile Include="..\..\..\snmp++\src\reentrant.cpp" />
<ClCompile Include="..\..\..\snmp++\src\sha.cpp" />
<ClCompile Include="..\..\..\snmp++\src\snmpmsg.cpp" />
<ClCompile Include="..\..\..\snmp++\src\target.cpp" />
<ClCompile Include="..\..\..\snmp++\src\timetick.cpp" />
<ClCompile Include="..\..\..\snmp++\src\usm_v3.cpp" />
<ClCompile Include="..\..\..\snmp++\src\uxsnmp.cpp" />
<ClCompile Include="..\..\..\snmp++\src\v3.cpp" />
<ClCompile Include="..\..\..\snmp++\src\vb.cpp" />

修改程式碼

    //auth_priv.cpp(855) 修改
    if (add_auth(new /*AuthSHA*/AuthMD5()) != SNMP_ERROR_SUCCESS)

    //log.h(38)增加
    #include <string.h>

    //config_snmp_pp.h(74) 修改
    #if 0
    #define HAVE_LIBSSL 1
    #endif
    #if 0
    #define HAVE_LIBTOMCRYPT 1
    #endif
    #if 1
    #define HAVE_LIBDES 1
    #endif
    #if 0
    #define HAVE_PTHREAD 1
    #endif

拷貝檔案

源 \vs2013\SNMP++\include \config.h
源 \snmp++\libsnmp.h
目標目錄 \snmp++\include\

使用lib

預定義巨集

#define HAVE_CONFIG_H

標頭檔案目錄

$(SolutionDir)\include;$(SolutionDir)\..\..\libdes;$(SolutionDir)\..\..\snmp++\include;

標頭檔案

#include <libsnmp.h>
#include "snmp_pp/snmp_pp.h"

依賴庫目錄

$(SolutionDir)\..\libdes\$(Configuration);$(SolutionDir)\$(Configuration);%(AdditionalLibraryDirectories)

新增依賴庫

libdes.lib;SNMP++.lib;Ws2_32.lib;

附:libdes

VS新建解決方案

修改相應的工具集(Platform Toolset),VS2013–v120,VS2010–v100
修改相應的字符集(Character Set),Use Multi-Byte Character Set

直接編譯即可使用