SNMP++包的使用及一些错误的处理

Snmp++开发包的应用SNMP++的使用





    本人小菜鸟一个就是在用到这个管理协议的时候,一个问题纠结了整整一天多的时间,现做如下的总结有什么问题还请各位大侠指教纠正,达到我们共同学习的目的!
    所遇问题:在应用程序中建立SNMP会话(也就是在这句Snmp m_snmp(status);)时调试时会弹出unhandle exception in processor.exe(NTDLL.DLL):0xC0000005:Acess Voilation对话框。介绍这个问题前简单说一下Snmp++开发包的应用。
    首先在网上下载一个AGENT_SNMP.zip包(如有需要可以联系我),生成snmp_pp.lib and snmp_pp.dll两个文件。
方法:解压你上面下载好的包,这时会解压出这么几个包libdes-l-4.01.tar,msvc_projects.tar,snmp++2_8.tar,snmp++v3.2.23.tar,snmp++v3.2.23_changed.rar。新建一个文件夹把这几个包放在这个新建文件夹下,分别解压出的文件夹不要互相包含,他们是同一级的。这时你会看到两个snmp_pp_lib.dsw文件,这两个文件一个是生成snmp_pp.lib文件,另一个是生成snmp_pp.dll文件的。用你所安装的VC工具分别打开这两个文件,如需查看哪个文件是生成snmp_pp.lib文件,哪个文件是生成snmp_pp.dll文件的,查看方法:Project->Settings...->Link->Output file name:下你就会看到了究竟是生成的什么文件了。
    在生成snmp_pp.dll文件时,可能出现找不到文件的现象,这时解决办法是:把snmp_pp文件夹下的源文件和头文件,放到工程目录下,把所有像这样定义的头文件#include "snmp_pp/snmp_pp.h"替换为#include "snmp_pp.h"把前面的snmp_pp/去掉,或者把这些用到的头文件和源文件放在安装文件夹下。
    将生成的静态链接库文件直接复制到VC安装目录:\VC98\Lib中去,就可以像使用VC自带的其他库文件一样使用它了。
    将这些工作做好以后,接下来建立我们自己的一个基于对话框的新工程如:MyTest。
    在Tools->Options...->Directories->包含目录中加入需要用到的include目录,src目录、libdes目录和snmp_pp.lib所在的目录。
    在Project->Settings...->Link下的Object/library modules:下添加snmp_pp.lib ws2_32.lib 点击ok。进行Rebuidle all
,不要忘记在你工程文件中包含#include "snmp_pp.h"。当编译时出现如下错误时
snmp_pp.lib(address.obj) : error LNK2001: unresolved external symbol
_htonl@4
snmp_pp.lib(address.obj) : error LNK2001: unresolved external symbol_WSAGetLastError@0
snmp_pp.lib(uxsnmp.obj) : error LNK2001: unresolved external symbol_WSAGetLastError@0
snmp_pp.lib(notifyqueue.obj) : error LNK2001: unresolved external symbol_WSAGetLastError@0
.
.
.
这是由于你在Project->Settings...->Link下的Object/library modules:没有添加添加ws2_32.lib,所以记着把这个文件包含进去。

编译的时候可能会出现这个警告:waring Link4098:default "LIBCMTD".conflict with use of other libs;/use/NODEFAULTLIB:library
解决方法:在Project->Settings...->Link页Category:选Input,然后再Ignore libraries:里写libcmtd.lib点击ok。再次Rebuidle all。你会发现在这句Snmp m_snmp(status);中还会出现上面的问题,解决方法:Project->Settings...->General中Mircrosoft Foundation Class:下选择Use MFC in a Static Library,点击ok,再次Rebuidle all。发现出现这样的错误
nafxcwd.lib(winctrl3.obj) : error LNK2001: unresolved external symbol __atexit
.
.
.解决方法:在Project->Settings...->Link页Category:选Input,在Ignore libraries:里写nafxcwd.lib点击ok,然后Rebuidle all。这时一切就ok了。
我用的是VC6.0经测试,成功通过!

你可能感兴趣的:(管理协议,网络通信)