【发布时间】:2012-06-10 22:22:06
【问题描述】:
我在cygwin 下使用gcc 编写一些代码,在我的代码中从iphlpapi.h 调用GetAdaptersAddresses已添加 -liphlpapi 但链接器仍然失败并显示以下消息:
gcc -liphlpapi build/obj/*.o -Wall -Wextra -o build/bin/asdf.exe src/asdf.cpp
/tmp/ccdjLPVY.o:asdf.cpp:(.text+0x153): undefined reference to `_GetAdaptersAddresses@20'
collect2: ld returned 1 exit status
来自asdf.cpp的一些sn-ps:
#if _WIN32_WINNT < 0x0501
#warning _WIN32_WINNT was set lower than 0x0501, fixing
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
#endif
#include <winsock2.h>
#include <iphlpapi.h>
我知道他们在那里该死的:
strings /usr/i686-pc-mingw32/sys-root/mingw/lib/libiphlpapi.a | sort | uniq | grep GetAdapters
__imp__GetAdaptersAddresses@20
__imp__GetAdaptersInfo@8
_GetAdaptersAddresses@20
_GetAdaptersInfo@8
GetAdaptersAddresses
GetAdaptersInfo
$strings /usr/lib/w32api/libiphlpapi.a | sort | uniq | grep GetAdapters
__imp__GetAdaptersAddresses@20
__imp__GetAdaptersInfo@8
_GetAdaptersAddresses@20
_GetAdaptersInfo@8
GetAdaptersAddresses
GetAdaptersInfo
有人看到我错过了什么吗?
编辑:回答
# Change the order, put the linker options last:
# Before:
gcc -liphlpapi build/obj/*.o -Wall -Wextra -o build/bin/asdf.exe src/asdf.cpp
# After:
gcc build/obj/*.o -Wall -Wextra -o build/bin/asdf.exe src/asdf.cpp -liphlpapi
【问题讨论】:
-
This question 谈论订单的重要性。这有帮助吗?
-
@chris 成功了,请使用该链接提交答案