WinPcap에서 설치된 n/w 장치에 대한 고급 정보를 얻는 예제를 시험 중입니다. pcap_findalldevs_ex 함수가 정의되지 않았습니다.
나는 심지어 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, NULL, &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, char *address, int addrlen)
{
//Code removed to reduce length
}
은 어떤 사람이 날이 올바른 방향으로 포인트?
편집 : 위의 코드에서 pcap_findalldevs(&alldevs, errbuf)
을 사용하면 성공적으로 빌드됩니다. 그래서 그것은 DLL에 연결하는 데 아무런 문제가 없다고 생각합니다.
편집 1 : 오류
오류 C3861 : 'pcap_findalldevs_ex'
인텔리 발견되지 식별자 : 식별자 "pcap_findalldevs_ex는"
감사 정의되지 않습니다. 당신이 모든에 대해 다음 HAVE_REMOTE
프로젝트 속성에서 전 처리기 정의로 HAVE_REMOTE
를 추가하거나 할 정의하면
같은 대답은 나를 위해 일한, 게다가 64 비트 OS 인 x64 (WpdPack \ Lib \ x64) 대신 32 비트 라이브러리를 참조해야만했습니다. –