由于C#/WPF不可以直接调用lib,只能调用dll;所以将之前的SNMP lib要改成 SNMP DLL
1.下载SNMP库
LIBDES-l-4.01a 解压后为libdes文件夹
SNMP++v3.2.25 解压后为snmp++文件夹
2.新建DLL工程
将上述两个文件夹复制到工程目录下,将两个文件夹中有的.c、.cpp文件全部添加到工程的源文件中,将两个文件夹中有的.h文件全部添加到工程头文件中
在工程包含目录中添加两个文件夹中.h的目录
在工程源目录中添加两个文件夹中源文件的目录
在链接器-输入-附加依赖项中添加ws2_32.lib
在“工程”->“属性”->“配置属性”->“C/C++”->“预处理器”->“预处理器定义”添加以下定义解决sprintf函数相关的waring或者error
_CRT_SECURE_NO_DEPRECATE
_SCL_SECURE_NO_DEPRECATE
在dllname.cpp中声明要导出的函数(注:DLL导出类只可以给相同编译器的c++调用,不能给c#调用,所以考虑自己写几个函数,将类的使用写在函数里面,在外层只调函数)
3.重新生成
ok
4.说明
Ws2_32.lib的作用:参考:https://blog.youkuaiyun.com/u011385799/article/details/49365675
该库对应ws2_32.dll,提供了对以下网络相关API的支持,若使用其中的API,则应该将ws2_32.lib加入工程(否则需要动态载入ws2_32.dll)。如果没有连接该库会出现许多下列函数中的链接错误
accept
bind
closesocket
connect
getpeername
getsockname
getsockopt
htonl
htons
ioctlsocket
inet_addr
inet_ntoa
listen
ntohl
ntohs
recv
recvfrom
select
send
sendto
setsockopt
shutdown
socket
GetAddrInfoW
GetNameInfoW
WSApSetPostRoutine
FreeAddrInfoW
WPUCompleteOverlappedRequest
WSAAccept
WSAAddressToStringA
WSAAddressToStringW
WSACloseEvent
WSAConnect
WSACreateEvent
WSADuplicateSocketA
WSADuplicateSocketW
WSAEnumNameSpaceProvidersA
WSAEnumNameSpaceProvidersW
WSAEnumNetworkEvents
WSAEnumProtocolsA
WSAEnumProtocolsW
WSAEventSelect
WSAGetOverlappedResult
WSAGetQOSByName
WSAGetServiceClassInfoA
WSAGetServiceClassInfoW
WSAGetServiceClassNameByClassIdA
WSAGetServiceClassNameByClassIdW
WSAHtonl
WSAHtons
gethostbyaddr
gethostbyname
getprotobyname
getprotobynumber
getservbyname
getservbyport
gethostname
WSAInstallServiceClassA
WSAInstallServiceClassW
WSAIoctl
WSAJoinLeaf
WSALookupServiceBeginA
WSALookupServiceBeginW
WSALookupServiceEnd
WSALookupServiceNextA
WSALookupServiceNextW
WSANSPIoctl
WSANtohl
WSANtohs
WSAProviderConfigChange
WSARecv
WSARecvDisconnect
WSARecvFrom
WSARemoveServiceClass
WSAResetEvent
WSASend