2010-12-01 6 views
0

J'essaie d'obtenir des informations du serveur DHCP en utilisant l'API Windows, mais je continue à obtenir des références non définies.référence non définie à `DhcpEnumSubnets '

Selon MSDN DhcpEnumSubnets est en dhcpsapi.lib et je l'ai vérifié que le prototype IS dans le fichier dhcpsapi.h et (par la recherche de texte simple) qu'il EST dans le .lib

Comme Vous pouvez voir ci-dessous que je suis en liaison avec la lib, mais j'ai quand même des erreurs de liens. Est-ce que quelqu'un a des idées pour moi?

Voici mon journal de compilation: J'utilise Dev-C++ 4.9.9.2 sous Windows XP SP2, avec la dernière plate-forme Windows SDK

« Microsoft® Windows® Kit de développement logiciel (SDK) pour Windows Server 2008 et .NET Framework 3.5 "
" Cette version du SDK Windows prend en charge les plates-formes x86, x64 et IA64 pour la création et l'exécution d'applications sous Windows XP SP2, Windows Server 2003 R2, Windows Vista et Windows Server 2008. "


compilateur: compilateur par défaut Makefile Building: "C: \ Projects \ dhcptest \ Makefile.win" make clean exécution rm -f main.o dhcptest.exe

g ++ .exe -c main.cpp -o main.o -I "C: /Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I "C:/Dev-Cpp/include/C++/3.4. 2/vers l'arrière "-I" C:/Dev-Cpp/include/C++/3.4.2/mingw32 "-I" C:/Dev-Cpp/include/C++/3.4.2 "-I" C:/Dev- Cpp/include "-I" C:/Program Files/Microsoft SDK/Windows/v6.1/Inclure "

g ++. Exe main.o -o "dhcptest.exe" -L "C:/Dev-Cpp/lib" -L "C:/Program Files/Microsoft SDKs/Windows/v6.1/Lib" ". ./../ Fichiers de programme/Microsoft SDK/Windows/v6.1/Lib/WS2_32.Lib "" ../../ Fichiers de programme/Microsoft SDK/Windows/v6.1/Lib/dhcpsapi.lib "

main.o (.text + 0x128): main.cpp: undefined reference to 'DhcpGetVersion' main.o (.text + 0x1d7): main.cpp: undefined reference to 'DhcpEnumSubnets' principal. o (.text + 0x2b2): main.cpp: référence non définie à 'DhcpEnumSubnetClients'

collect2: ld a renvoyé 1 état de sortie

make.exe: * [dhcptest.exe] Erreur 1

Exécution terminée


Edit: je résolu le problème par impdef/implib-ing le dhcpsapi.dll et la liaison avec cette bibliothèque. Je n'ai aucune idée de quoi il s'agit avec la lib fournie dans le SDK de plate-forme MS.

Répondre

1

Je vois -L options dans votre ligne de commande qui spécifient des chemins bibliothèque supplémentaires, mais je ne vois aucune -l préciser quelle bibliothèque à se lier à.

Je les opérations suivantes:.

g ++ exe main.o -o "dhcptest.exe" -L "C:/Dev-Cpp/lib" -L "C:/Program Files/Microsoft SDKs/Windows/v6.1/Lib » -lWS2_32 -ldhcpsapi

+0

vous ne avez pas besoin si vous le -l spécifiez le chemin complet vers le fichier .lib ... c'est la façon dev- C++ le fait quand vous ajoutez une lib à votre projet. Peu importe, j'ai essayé avec ** - lWS2_32 -ldhcpsapi **, mais toujours le même problème. : - / –

Questions connexes