对"_GetAdaptersAddresses@20"的未定义引用 - 但我包括了 -liphlpapi
undefined reference to `_GetAdaptersAddresses@20' - but I included -liphlpapi
我正在使用gcc
under cygwin
编写一些代码,这些代码在我设置_WIN32_WINNT
高于所需0x0501
的代码中从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
的一些片段:
#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
正如这个问题所解释的,gcc参数的顺序很重要。您需要将库包含移动到依赖于它的对象之后。
所以gcc build/obj/*.o -liphlpapi ...
尝试添加 #pragma 注释(lib, "Iphlpapi.lib")
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- 我在c++代码中生成了一个运行时#3异常
- Ardunio UNO解决了多个重叠的定时器循环
- 为什么我的代码在输出中增加了93天
- C++为什么尽管我调用了void函数,它却不起作用
- 不断收到相同的错误...怎么了?C++
- 首要问题的答案让值班员搞错了
- 安装了要来源的特征cmake目标点包括但不安装
- 我在哪里可以找到arm-linux-gneabihf-ld的手册页,更不用说写得很好的手册页了,其中包括-rpath和-
- 编译头文件定义了一个模板类,该类还包括其他头文件
- 在包括QtNetwork时,我遇到了很多错误
- 对"_GetAdaptersAddresses@20"的未定义引用 - 但我包括了 -liphlpapi
- 我包括了“SDL_TTF.h”.我还应该对SDT真正类型的字体工作做些什么
- 为什么包括警卫对我没有影响?我是不是错过了什么
- 谁包括了要定义的对象
- 包括DShow.h打破了BDS2006上的VCL AnsiString::sprintf()
- 为什么我的类是不可访问的,而我已经包括了头文件
- Eclipse CDT 无法构建 - 不确定出了什么问题(包括控制台)