【Visual Studio】C++ 常见错误——无法解析的外部符号
关于C++常见错误“无法解析的外部符号”这一问题如何解决的思考与方法。
本文就使用libevent中遇到的相似问题着手进行分析该如何解决,其他情况仍需按实际情况进行分析处理。常见的原因无外乎缺少编译库。
-
如上图所示,报错为无法解析的外部符号,符号为
__imp__if_nametoindex@4
, 一般这种符号就是缺少导出的接口,导出接口一般为函数名@导出序号
。基本可以确定是缺少一个链接库。其次 出现字符_imp
,说明不是真正的静态库,而是某个动态库的导入库,导入函数和自己不同名,所以加了字符_imp
。这里可以确定导出函数名为if_nametoindex
; -
确定了导出函数名为
if_nametoindex
之后,可以百度查看一下有没有相关函数的信息;
一搜发现为windows系统函数,是网络相关的接口函数,负责将ANSI接口转换为接口的本地索引。其声明需要包含的静态库文件为
Netio.lib
。但是笔者这边测试之后发现无法打开Netio.lib
这个静态库,再查找,找到其相关索引为 IP Helper Functions。 -
至此,基本上可以确定其缺少的静态库和网络部分相关,找到相关函数(这里查看的函数为
AddIPAddress
),查看其函数使用要求,需要引用Iphlpapi.lib
,引入到代码中,编译成功。
【Visual Studio】C++ 常见错误——无法解析的外部符号
https://hodlyounger.github.io/2023/10/27/A_OS/Windows/Visual Studio/无法解析的外部符号错误处理/