неопределенная ссылка на '_GetAdaptersAddresses@20' - но я включил -liphlpapi

Я использую gccпод cygwinдля написания кода, который вызывает GetAdaptersAddressesиз iphlpapi.hв моем коде я установил _WIN32_WINNTнад требуемым 0x0501и в строке компоновщика я добавил -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:

#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
8
задан Huckle 10 June 2012 в 23:32
поделиться