В общем пробую работать с WinPCap - при компиляции программы выскакивает ошибка линковки..... Код: Код (Text): // ObtAdvancedInfoAboutDevs.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <pcap.h> #pragma comment (lib, "wpcap.lib") #ifndef WIN32 #include <sys/socket.h> #include <netinet/in.h> #else #include <winsock.h> #endif void ifprint(pcap_if_t *dev); 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 *onedev; char errbuff[PCAP_ERRBUF_SIZE + 1]; char sources[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(sources, PCAP_ERRBUF_SIZE, stdin); sources[PCAP_ERRBUF_SIZE] = '\0'; if( pcap_findalldevs(&alldevs, errbuff) == -1 ){ fprintf(stderr, "Error in pcap_findalldevs(): %s\n", errbuff); exit(1); } for( onedev = alldevs; onedev; onedev = onedev->next ){ ifprint(onedev); } pcap_freealldevs(alldevs); return 1; } void ifprint(pcap_if_t *onedev){ pcap_addr_t *a; char ip6str[128]; printf("Name: %s\n", onedev->name); if( onedev->description ) printf("Description: %s\n", onedev->description); printf("Loopcack: %s\n", (onedev->flags & PCAP_IF_LOOPBACK) ? "yes" : "no"); for( a = onedev->addresses; a; a = a->next ){ printf("Addr Family: #%d\n", a->addr->sa_family); switch(a->addr->sa_family){ case AF_INET: printf("\tAddress Family Name: AF_INET\n"); if (a->addr) printf("\tAddress: %s\n", iptos(((struct sockaddr_in *)a->addr)->sin_addr.s_addr)); if (a->netmask) printf("\tNetmask: %s\n", iptos(((struct sockaddr_in *)a->netmask)->sin_addr.s_addr)); if (a->broadaddr) printf("\tBroadcast Address: %s\n", iptos(((struct sockaddr_in *)a->broadaddr)->sin_addr.s_addr)); if (a->dstaddr) printf("\tDestination Address: %s\n", iptos(((struct sockaddr_in *)a->dstaddr)->sin_addr.s_addr)); break; case AF_INET6: printf("\tAddress Family Name: AF_INET6\n"); if (a->addr) printf("\tAddress: %s\n", ip6tos(a->addr, ip6str, sizeof(ip6str))); break; default: printf("\tAddress Family Name: Unknown\n"); break; } } printf("\n"); } #define IPTOSBUFFERS 12 char *iptos(u_long in){ static char output[IPTOSBUFFERS][3*4+3+1]; static short which; u_char *p; p = (u_char *)∈ which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1); sprintf(output[which], "%d.%d.%d.%d", p[0], p[1], p[2], p[3]); return output[which]; } char* ip6tos(struct sockaddr *sockaddr, char *address, int addrlen){ socklen_t sockaddrlen; #ifdef WIN32 sockaddrlen = sizeof(struct sockaddr_in6); #else sockaddrlen = sizeof(struct sockaddr_storage); #endif if( GetNameInfoA(sockaddr, sockaddrlen, address, addrlen, NULL, 0, NI_NUMERICHOST) != 0) address = NULL; return address; } Текст ошибки: Код (Text): Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ __imp__getnameinfo@28 в функции "char * __cdecl ip6tos(struct sockaddr *,char *,int)" (?ip6tos@@YAPADPAUsockaddr@@PADH@Z) C:\Documents and Settings\Admin\мои документы\visual studio 2010\Projects\ObtAdvancedInfoAboutDevs\ObtAdvancedInfoAboutDevs\ObtAdvancedInfoAboutDevs.obj Ошибка 3 error LNK1120: 1 неразрешенных внешних элементов C:\Documents and Settings\Admin\мои документы\visual studio 2010\Projects\ObtAdvancedInfoAboutDevs\Debug\ObtAdvancedInfoAboutDevs.exe 1 Вроде lib файл прилинковал, возможно что то упустил ! Подскажите в чем проблема !
Нет, но уже добавил - проблема решена. Спасибо! З.Ы. Странно но что то я про эту либу упустил материал .... =(