0

我正在尝试使用 windows api 从 DHCP 服务器获取一些信息,但我不断收到未定义的引用。

根据 MSDN DhcpEnumSubnets 在 dhcpsapi.lib 中,我已经验证原型在dhcpsapi.h文件中,并且(通过简单的文本搜索)它在 .lib

正如您在下面看到的,我正在链接库,但仍然出现链接器错误。有人对我有什么想法吗?

这是我的编译日志:我在 Windows XP SP2 上使用 Dev-C++ 4.9.9.2,带有最新的 Windows 平台 SDK

"Microsoft® Windows® Software Development Kit (SDK) for Windows Server 2008 and .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/Include"

g++.exe main.o -o "dhcptest.exe" -L"C:/Dev-Cpp/lib" -L"C:/Program Files/Microsoft SDKs/Windows/v6.1/Lib" "../. ./Program Files/Microsoft SDKs/Windows/v6.1/Lib/WS2_32.Lib" " ../../Program Files/Microsoft SDKs/Windows/v6.1/Lib/dh​​cpsapi.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

执行终止


编辑: 我通过 impdef/implib-ing dhcpsapi.dll 并链接到该库解决了这个问题。不知道 MS 平台 SDK 中提供的库是怎么回事。

4

1 回答 1

1

-L在您的命令行中看到了指定其他库路径的选项,但我没有看到任何指定要链接-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

于 2010-12-01T11:29:37.087 回答