我正在尝试从
WinPcap获取有关已安装的n / w设备的高级信息的示例.
我甚至按照包含WinPcap库的说明,仍然编译器抱怨pcap_findalldevs_ex
未定义
在行if(pcap_findalldevs_ex(source,NULL,& alldevs,errbuf)== -1).
我的代码:
#include "stdafx.h" #include <stdio.h> #include "pcap.h" #include <winsock2.h> #pragma comment(lib,"ws2_32") // Function prototypes void ifprint(pcap_if_t *d); char *iptos(u_long in); char* ip6tos(struct sockaddr *sockaddr,char *address,int addrlen); int _tmain(int argc,_TCHAR* argv[]) { pcap_if_t *alldevs; pcap_if_t *d; char errbuf[PCAP_ERRBUF_SIZE+1]; char source[PCAP_ERRBUF_SIZE+1]; printf("Enter the device you want to list:\n" "rpcap:// ==> lists interfaces in the local machine\n" "rpcap://hostname:port ==> lists interfaces in a remote machine\n" " (rpcapd daemon must be up and running\n" " and it must accept 'null' authentication)\n" "file://foldername ==> lists all pcap files in the give folder\n\n" "Enter your choice: "); fgets(source,PCAP_ERRBUF_SIZE,stdin); source[PCAP_ERRBUF_SIZE] = '\0'; /* Retrieve the interfaces list */ if (pcap_findalldevs_ex(source,&alldevs,errbuf) == -1) { fprintf(stderr,"Error in pcap_findalldevs: %s\n",errbuf); exit(1); } /* Scan the list printing every entry */ for(d=alldevs;d;d=d->next) { ifprint(d); } pcap_freealldevs(alldevs); return 1; return 0; } /* Print all the available information on the given interface */ void ifprint(pcap_if_t *d) { //Code removed to reduce length and it contains no errors. } /* From tcptraceroute,convert a numeric IP address to a string */ #define IPTOSBUFFERS 12 char *iptos(u_long in) { //Code removed to reduce length } char* ip6tos(struct sockaddr *sockaddr,int addrlen) { //Code removed to reduce length }
有人能指出我正确的方向吗?
编辑:如果我在上面的代码中使用pcap_findalldevs(& alldevs,errbuf),它就会成功构建.所以我想连接到dll没有问题.
编辑1:错误
错误C3861:’pcap_findalldevs_ex’:找不到标识符
IntelliSense:标识符“pcap_findalldevs_ex”未定义
谢谢.