我正在尝试使用 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/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
执行终止
编辑: 我通过 impdef/implib-ing dhcpsapi.dll 并链接到该库解决了这个问题。不知道 MS 平台 SDK 中提供的库是怎么回事。