Fehler beim Einbinden der Library "Iphlpapi.lib"



  • Hi,

    Mein Problem ist recht simpel .. an sich. oO

    Ich brauche folgende Funktion:

    GetTcpTable()
    

    jene welche laut MSDN folgendes braucht:

    Header Declared in Iphlpapi.h.
    Library Link to Iphlpapi.lib.
    DLL Requires Iphlpapi.dll.

    In mein Programm hab ich folgendes eingebunden:

    #include <Iphlpapi.h>
    #pragma comment(lib, "Iphlpapi.h")

    Ok.. soweit so gut.. naja, eigentlich nicht. 😉

    Beim Kompilieren kriege ich allerdings die Meldung:

    undefinded reference to '_GetTcpTable@12'

    Ok, mir ist auch klar was das heißen soll aber ich find
    nicht raus wie ich dieses Problem lösen kann.
    Ich hab keine Ahnung wo die Definition dafür steht bzw.
    find auch in Google oder MSDN oder anderen Seiten
    was dazu.

    Ich müßte doch eigentlich nur die entsprechende Datei noch mit
    einbinden in der diese Def. steht oder irre ich?

    Wenn ich die Datei einbinden muß, dann wäre ich dankbar darüber,
    wie diese heißt. 😃 Ich find's nicht raus.

    Thx.



  • #pragma comment(lib, "Iphlpapi.h")

    Augen auf beim Eierkauf!

    Library Link to Iphlpapi.lib.



  • SeppSchrot schrieb:

    #pragma comment(lib, "Iphlpapi.h")

    Augen auf beim Eierkauf!

    Library Link to Iphlpapi.lib.

    Sollte das nicht eher #pragma comment(lib, "Iphlpapi.lib") heißen 😃



  • Danke, aber das hab ich schon probiert, hilft auch nix.



  • das sind aber die richtigen angaben:

    #include <iphlpapi.h>
    #pragma comment(lib, "iphlpapi.lib")
    

    hast du die iphalpapi überhaupt?

    http://forum.fachinformatiker.de/archive/index.php/t-61733.html



  • Wie das Ganze von einem anderem Programm eingebunden wird:

    #include <iphlpapi.h>
    
    #pragma comment(lib, "ws2_32.lib")
    #pragma comment(lib, "Iphlpapi.h")
    

    Wie ich es schon versucht habe:

    #include <iphlpapi.h>
    
    #pragma comment(lib, "ws2_32.lib")
    #pragma comment(lib, "Iphlpapi.h") || #pragma comment(lib, "Iphlpapi.dll")
    

    Ich hab sogar versucht beides einzubinden.
    Also mit

    #pragma comment(lib, "ws2_32.lib")
    #pragma comment(lib, "Iphlpapi.h")
    #pragma comment(lib, "Iphlpapi.dll")
    

    Ich krieg überall die gleiche Fehlermeldung.

    Iphlpapi.h:

    The iphlpapi module supports the IP Helper application programming interface (API).

    Details:

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcecomm5/html/wce50grfiphelperfunctions.asp



  • Beim Linken musst Du trotzdem noch die Import-Library angeben, also "Iphlpapi.lib" bei den Linker-Optionen fuer das Projekt. Den "#pragma comment" kannste Dir dann sparen. Offensichtlich musst Du eh ein anderes Pragma angeben, da der Linker sagt "undefinded reference to '_GetTcpTable@12'", was offensichtlich auf die falsche Calling-Konvention hindeutet: Das @12 am Ende bedeutet "12 Bytes Stackverbrauch bei der Parameteruebergabe in der Pascal-Calling-Convention", alle neueren Import-Libraries verwenden das Format aber nicht mehr. Es darf nur "GetTcpTable" referenziert werden. Deshalb: Pragma weglassen und die Import-Library in die Linker-Optionen aufnehmen.



  • @ Power Off

    Gibt es eine Möglichkeit im Code direkt die Library anzugeben (außer pragma comment(lib, "Iphlpapi.lib"),
    denn ich arbeite nur mit dem gVim und gcc.
    D.h. da gibt es keine Projektoptionen 😃



  • ich denke einfach, du hast die library garnicht? oder er findet sie nicht?

    überprüfen.



  • Hab ich auch gedacht aber dem ist nicht so, die ist bei mir auf'm
    Rechner.

    //Edit:

    Ich hab auch schon gedacht, ob es vielleicht daran liegt, daß ich mit Cygwin arbeite also gcc aus Cygwin aufrufe, da Cygwin die Prozesse nicht als Primärprozesse aufruft blaschwall. Hatte so ein Problem mal mit der Lazarus - IDE (bzgl. des Debuggers) aber das kann es auch nicht sein (sind ja zwei paar Stiefel), ich hab nämlich mal probiert ne andere dll einzubinden und das funzt super.

    (Vielleicht mag mich diese Dll nur einfach nicht 😃 )



  • sehe grad, du arbeitest mit dem gcc.. aha. wieso postest du dann im mfc forum?

    zum anderen: da musst du per compileroption dazulinken.

    man g++.

    cygwin? ansonsten hmm

    achso: wo liegt deine lib? die dll ist natürlich unter windows dabei... die sdk installieren ist wohl noch was anderes... 😉



  • sehe grad, du arbeitest mit dem gcc.. aha. wieso postest du dann im mfc forum?

    Wo würde denn deiner Meinung nach dieses Thema hingehören? *kopf kratzt*

    achso: wo liegt deine lib?

    Im Projektverzeichnis.

    man g++.

    V.dammt, werd ich wohl doch nicht rumkommen das Ding durchlesen zu müßen. 😃

    Danke, ich meld mich wieder.


Anmelden zum Antworten