неопределенная ссылка на `DhcpEnumSubnets ' - PullRequest
0 голосов
/ 01 декабря 2010

Я пытаюсь получить некоторую информацию от DHCP-сервера с помощью API Windows, но продолжаю получать неопределенные ссылки.

Согласно MSDN DhcpEnumSubnets находится в dhcpsapi.lib, и я проверил, что прототип IS в файле dhcpsapi.h и (путем простого текстового поиска), что он IS в .lib

Как вы можете видеть ниже, я ссылаюсь на библиотеку, но все же получаю ошибки компоновщика. У кого-нибудь есть идеи для меня?

Вот мой журнал компиляции: я использую Dev-C ++ 4.9.9.2 в Windows XP SP2 с последней версией Windows Platform SDK

"Microsoft® Windows® Software Development Kit (SDK) для Windows Server 2008 и .NET Framework 3.5"
«Этот выпуск Windows SDK поддерживает платформы x86, x64 и IA64 для создания и запуска приложений на Windows XP SP2, Windows Server 2003 R2, Windows Vista и Windows Server 2008».


Компилятор: компилятор по умолчанию Сборка Makefile: "C: \ Projects \ dhcptest \ Makefile.win" Выполнение make clean 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 / backward "-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 SDKs / Windows / v6.1 / Включить "

g ++. Exe main.o -o "dhcptest.exe" -L "C: / Dev-Cpp / lib" -L "C: / Program Files / Microsoft SDKs / Windows / v6.1 / Lib" ". ./../ Файлы программ / Microsoft SDKs / Windows / v6.1 / Lib / WS2_32.Lib "" .. / .. / Программные файлы / Microsoft SDKs / Windows / v6.1 / Lib / dhcpsapi.lib"

main.o (.text + 0x128): main.cpp: неопределенная ссылка на 'DhcpGetVersion' main.o (.text + 0x1d7): main.cpp: неопределенная ссылка на 'DhcpEnumSubnets' main.o (.text + 0x2b2): main.cpp: неопределенная ссылка на 'DhcpEnumSubnetClients'

collect2: ld вернул 1 статус выхода

make.exe: * [dhcptest.exe] Ошибка 1

Исполнение прекращено


Edit: Я решил проблему с помощью impdef / implib-dhcpsapi.dll и связался с этой библиотекой. Понятия не имею, что случилось с библиотекой, поставляемой в MS Platform SDK.

1 Ответ

1 голос
/ 01 декабря 2010

Я вижу в вашей командной строке опции -L, которые определяют дополнительную библиотеку paths , но я не вижу никаких -l, чтобы указать, какую библиотеку связать с .

Я бы попробовал следующее:

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

...