Ping

illaX

Erfahrenes Mitglied
Hi,

ich benoetige fuer eine Applikation nen Ping. Ich habe keine grossen Erfahrungen mit C++.
Habe mir dann das Beispiel von der MSDN Seite angeschaut.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/icmpsendecho.asp

Dies ist meine erarbeitete Klasse:
Code:
#include "stdafx.h"
#pragma comment(lib, "IPHlpApi.lib")

#include "ipexport.h"
#include "icmpapi.h"
#include <iostream>
#include <winsock.h>



using namespace std;

int main(int argc, char* argv[])
{	
	HANDLE hIcmpFile;
	if ((hIcmpFile = IcmpCreateFile()) == INVALID_HANDLE_VALUE)
		printf("\tUnable to open file.\n");
	else
		printf("\tFile created.\n");

    // Declare and initialize variables
	char SendData[] = "Data Buffer";
	LPVOID ReplyBuffer;
	
	int dwRetVal;
	ReplyBuffer = (VOID*) malloc(sizeof(ICMP_ECHO_REPLY) + sizeof(SendData));
	if ((dwRetVal = IcmpSendEcho(hIcmpFile, 
		inet_addr("123.456.789.0"), 
		SendData, sizeof(SendData) + sizeof(ICMP_ECHO_REPLY), 
		NULL, ReplyBuffer, 
		sizeof(SendData) + sizeof(ICMP_ECHO_REPLY),
		1000)) != 0) {
		PICMP_ECHO_REPLY pEchoReply = (PICMP_ECHO_REPLY)ReplyBuffer;
		printf("\tReceived %ld messages.\n", dwRetVal);
		printf("\tMessage: %s\n", pEchoReply->Data);
	}
	else {
		printf("\tCall to IcmpSendEcho() failed.\n");
		printf("\tError: %ld\n", GetLastError());
	}
	return 0;
}

leider funktioniert dies nicht so ganz er meldet folgende Fehler:


TestDLL error LNK2019: unresolved external symbol "unsigned long __stdcall IcmpSendEcho(void *,unsigned long,void *,unsigned short,struct ip_option_information *,void *,unsigned long,unsigned long)" (?IcmpSendEcho@@YGKPAXK0GPAUip_option_information@@0KK@Z) referenced in function _main

TestDLL error LNK2019: unresolved external symbol "void * __stdcall IcmpCreateFile(void)" (?IcmpCreateFile@@YGPAXXZ) referenced in function _main

TestDLL error LNK2019: unresolved external symbol _inet_addr@4 referenced in function _main

TestDLL error LNK2019: unresolved external symbol _WinMain@16 referenced in function _WinMainCRTStartup



Habe die Iphlpapi.lib und *.dll im selben Verzeichnis.

Nun frage ich mich was ich falsch mache? Die beiden Header ipexport und icmpapi header habe ich mir woanders heruntergeladen.

Ich danke fuer jede kleine Hilfe
 
Zuletzt bearbeitet:
Ich weiss nicht wie das geht. Habe es unter Configuration Properties -> Linker -> Comand Line und dort die lib eingetragen. Aber keine Ahnung ob dies richtig ist. Habe auch mal bei google gesucht wie das geht aber immer nur Text passagen gefunden das ich es tun muss aber nicht wie.
 
Also ich bin in die Property Page-Linker-Input, dort gibt es die Options:
Additional Dependencies, Module Definiton File und Add Module to Assembly, Embed Managed Resource File, Force Symbol References, Delay Load DLLs

und wo muss ich jetzt hinzufuegen? Habe alles ausprobiert aber es geht nicht.

*EDIT*
Habe gelesen das es das erste ist um libs einzubinden. Habe den namen der lib engetragen (die im selben Verzeichniss wie die cpp Datei liegt), aber es kommt noch die selbe Fehlerausgabe.
Muss ich vllt. einen speziellen Projekttypen benutzen? Ich habe ein Win32 Konsolenprojekt
 
Zuletzt bearbeitet:
So wie es aussieht muss meine lib Datei nicht funktiontuechtg sein. Ich habe die von einer Seite heruntergeladen, weiss jemand wo ich die herbekomme? Habe es bei MSDN versucht, aber die scheinen die nicht anzubieten.
 
Die Fehlermeldung bedeutet ja das mein Linken etwas nicht stimmt. Da die Methoden aus der LIB sind vermute ich mal das dort Probleme auftreten und in einer Datei die mit dabei war steht das viele Funktionen nur Prototypen sind und nicht einwandfrei funktionieren. Die lib kann ich mir leider nicht ansehen.

Es wundert mich eh ein wenig, das ich eine extra library benoetige, die nicht beim Betriebssystem bei ist, um eine bereits unterstuetze funktion aufzurufen....

So einen Fehler habe ich behoben:
#pragma comment(lib, "ws2_32.lib") habe ich noch hinzugefuegt

jetzt sind noch zwei uebrig

WinTest error LNK2019: unresolved external symbol "unsigned long __stdcall IcmpSendEcho(void *,unsigned long,void *,unsigned short,struct ip_option_information *,void *,unsigned long,unsigned long)" (?IcmpSendEcho@@YGKPAXK0GPAUip_option_information@@0KK@Z) referenced in function _main

WinTest error LNK2019: unresolved external symbol "void * __stdcall IcmpCreateFile(void)" (?IcmpCreateFile@@YGPAXXZ) referenced in function _main
 
Zuletzt bearbeitet:
Zurück