Grundlegende Frage zur Verteilung von Windows System-DLLs
-
Ich habe vor kurzem ein kleines Tool mit Funktionen der iphlpapi.h und iphlpapi.lib programmiert.
Dies läuft auf meinem WinXP Entwicklungs-PC problemlos, auf einem Windows 2000 PC verweigert es jedoch die Ausführung. (Einstiegspunkt so-und-so-viel in der DLL so-und-so-viel nicht gefunden... etc)
Meiner Meinung nach müsste ich nun einfach für diesen PC eine entsprechende aktuelle DLL besorgen - Ein einfaches Kopieren von meiner WinXP Maschine hatte allerdings gravierende Folgen.
Also eine ganz einfache Frage: Woher bekomme ich solche WinAPI DLLs für diverse Windows Versionen? Und wie sind die am sinnvollsten zu installieren? Braucht es neben dem Kopieren evt. noch eine Registrierung der DLL?
Danke!
Gruss, Flavio
-
Das Problem scheint sich etwas verdeutilcht zu haben:
Die DLL iphlpapi.dll ist offenbar Bestandteil von Windows 2000, daher auch in allen Service Packs dabei. Aber auch mit der aktuellsten Windows 2000 DLL erhalte ich folgenden Fehler:
"Der Prozedueinsprungpunkt "IcmpCreateFile" wurde in der DLL "iphlpapi.dll" nicht gefunden."
Laut MSDN soll diese Funktion aber unter Windows 2000 implementiert sein.
Hab ich da was beim Linker verbogen? Hab praktisch die Standardeinstellungen belassen. Oder vielleicht funkt das IPv6 Service Pack auf meiner WinXP Maschine dazwischen?
Bin für jegliche Tips dankbar!
Gruss, Flavio
-
Hmm, seltsam. Aber du kannst auch mit Winsock pingen (da ist auch nen Beispiel für die IcmpCreateFile()-Methode):
http://tangentsoft.net/wskfaq/advanced.html#ping
und
http://www.sockets.com/ms_icmp.htm
-
Danke für die Links!
Ich würde eigentlich ganz gerne bei den bestehenden Funktionen bleiben, da die an sich bestens funktionieren, alles nötige bieten und wesentlich einfacher sind.
Ich habe die betroffenen DLLs von der WinXP und Win2000 Maschine mal etwas untersucht und dabei festgestellt, dass die Win2000 DLL eine weitere DLL namens "icmp.dll" lädt die die nötigen Funktionen beinhaltet. Die WinXP DLL hingegen implementiert diese direkt.
Ich sollte also irgendeinen Weg finden meinem EXE klar zu machen auch in der icmp.dll nachzuschauen... Aber für solche Sachen kenne ich mich leider zu wenig mit den Windows / DLL Geschichten aus.
Hat mir jemand einen guten Tip?
Vielen Dank!
Gruss,
Flavio
-
Bei geeky's erstem link gibt es einen Verweis auf code wo die Funktionen zu laufzeit per GetProcAddress geladen werden: