“无法解析的外部符号”通用解决思路

C++报错信息:LNK2001:无法解析的外部符号 原因分析及解决方法 C++报错信息:LNK2001:无法解析的外部符号 解决方法及原因分析,error LNK2019: 无法解析的外部符号 阅读详情
AI摘要

日常开发常遇“无法解析的外部符号”问题,通常是引用外部函数却找不到对应地址。排查思路包括检查头文件包含是否正确、库文件配置是否正确、函数名称是否正确,还介绍了在不同系统下查找函数定义的命令及输出结果判断方法。

1、原因
日常开发过程中,经常遇到“无法解析的外部符号,在xxx中引用”,或者"Unresolved external symbol Referenced In xxx"。通常原因是引用了外部函数,但找不到对应的函数地址。

2、排查思路
(1) 头文件包含是否正确,在引用的模块里面是否能够找到对应的头文件。

(2) 库文件是否正确,在引用的模块里面是否正确配置库目录,库文件名称是否正确

(3) 函数名称是否正确
a、首先排查被引用的库是否有相应的函数
linux 下可以使用objdump或者nm命令;windows下可以使用dumpbin或者Dependencies

比如:
输入:
$ objdump -CtT libssl.so | grep -a SSL_get_options
查找libssl.so是否导出SSL_get_options函数

输出:
0000000000040020 g     F .text    000000000000000b              SSL_get_options
0000000000040020 g    DF .text    000000000000000b  OPENSSL_1_1_0 SSL_get_options

如果输出为上面所示,表示SSL_get_options有定义;如果输出没有结果或者显示  *UND* 则说明该函数没有定义,需要查看被引用库。

objdump输出格式解析,可以参考 https://blog.youkuaiyun.com/SimpleForest/article/details/138373339#:~:text=%E8%BF%99%E7%AF%87%E6%96%87%E7%AB%A0%E8%AF%A6%E7%BB%86%E8%A7%A3%E9%87%8A,%E7%AC%A6%E5%8F%B7%E7%9A%84%E7%9B%B8%E5%85%B3%E4%BF%A1%E6%81%AF%E3%80%82

b、函数名称是否正确
需要确保引用的名称要和库里导出的名称是完全一样的。

以上就是关于该问题的通用解决思路,可以解决95%该类问题,该问题可能有其他表现形式,但原因基本是一致的。

c++ 调用c代码 extern “C“ 确不能解决问题 unresolved external symbol c++ 调用c代码 extern "C" 确不能解决问题 unresolved external symbol 为什么不起作用了? cmake设置cpp工程 visual studio工程设置源代码文件编译方式 阅读详情

相关推荐

1. 无法解析的外部符号 “__declspec(dllimport) const XXX::vftable“ ` 2. `无法定义 dllimport 实体`

由于自己C++基础薄弱,导致这一系列的Bug改了好久好久。。。。记录一部分,我还记得的 编译通过镇一下哈哈 Bug1 error LNK2001: 无法解析的外部符号 "__declspec(dllimport) const XXX::vftable" 无法定义 dllimport 实体 这两个都是由于宏定义引起的。我的工程中是这样定义的 #ifdef EXPORTSS #define COMMON_EXPORTS __declspec(dllexport) #else #define COMMO

DanBo_C的博客 5916

编译链接过程中出现“无法解析的外部符号”,原因及解决办法总结

1、错误为:error LNK2019: 无法解析的外部符号 ___report_rangecheckfailure,该符号在函数 _OBJ_create_objects 中被引用 原因:__report_rangecheckfailure是用来检查堆栈缓存溢出的,如果编译的时候打开GS(project property--》Configuration properties--》c/c++......

fanzirong_的博客 12万+

Visual Studio实战:3分钟解决C++项目中的‘无法解析外部符号‘问题(含CMake项目特例)

本文针对Visual Studio中C++项目常见的'无法解析外部符号'(LNK2001)错误,提供了一套从理解编译链接本质到快速排查的实战指南。文章详细解析了错误成因,并给出了从检查定义缺失、配置库文件链接到处理CMake项目特例的完整解决方案,帮助开发者高效定位并修复这一经典链接器报错。

rr23456的博客 728

“error LNK2019: 无法解析的外部符号”原因总结

C++工程编译时出现如下链接错误提示: 原因一:只是在.h里面声明了某个方法,没有在cpp里面实现; 原因二:在工程中加入了有相同名字的文件或者类; 原因三:如果此类为静态库中定义的类,可能没有添加头文件目录和文件引用的lib静态库路径; 添加方法: 添加工程的头文件目录: 项目->属性->配置属性->C/C++->常规->附加包含目录:加上头文件的存放目录; 添加文件引用的lib静态库路径: 项目->属性->配置属性->链接器->常规->附加

woshigaowei5146的博客 7万+

vs报错“错误 LNK2019 无法解析的外部符号”的几种原因及解决方案

  运行vs程序的时候,报错严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2019 无法解析的外部符号 "__declspec(dllimport) public: void __cdecl PointCloudFilter::setptClouds(struct LAS_POINT *)" (__imp_?setptClouds@PointCloudFilter@@QEAAXPEAULAS_POINT@@@Z),该符号在函数 "private: void __cdecl PointClou

zeeq的博客 36万+

【CAN通讯系列18】- NM在干什么?休眠唤醒

同时针对不同休眠或唤醒场景,网管报文的userdata有所区别,如何做到场景与网管报文内容一一映射,通常会定义另一帧报文,用来表明当前是哪个或哪几个唤醒条件或休眠条件满足。又或者如果用户发现汽车电量不充足了,那么会有充电需求,插枪充电,这时如果插上慢充枪,那么OBC会先被唤醒,识别出插枪行为及其慢充枪的连接状态,然后OBC唤醒BMS和其他相关的控制器进行充电。也就是说,通过对一个又一个整车功能和应用场景的详细分析,最终能够汇总出整车所有的休眠唤醒场景需求,通常会用一个表格来管理,俗称休眠唤醒表。

menghuyouyou的博客 1167

无法解析外部符号的排查思路

如果是动态库中的某一个函数无法解析(只有图中的序号2),那就是第3种情况了,此时要不然更换对应的头文件,要不然更换对应的lib文件。在使用其他人的动态库或者第三方库的时候经常会遇到无法解析外部符号的问题。如果是引用了其他同事写的库,大概率是头文件的函数声明修改了,而动态库没有重新编译,导致你使用的头文件和lib文件不对应。如果是第三方库,请检查库的版本和头文件的版本是否对应。务必确保这两个地方的lib路径没有问题,具体查看哪个位置,看你的lib路径是在这两个地方中的哪一个添加的。,可以在下图的位置中查找。

weixin_43479651的博客 3404

【Nature Communications】超高介电常数材料 Hf0.5Zr0.5O2(HZO)

复旦大学AnQuanJiang团队在《NatureCommunications》发表研究,通过原子层沉积技术制备Hf0.5Zr0.5O2(HZO)薄膜电容器,结合等离子体处理获得突破性性能:介电常数达921,储能密度584J/cm³,效率近100%。研究揭示了铁电性消失后氧空位有序排列产生超高介电常数的机制,并通过同步辐射衍射和STEM分析证实了微观结构转变。该材料在85-300K温度范围内保持稳定,经1万亿次循环后仍能维持100μC/cm²电荷密度,为高密度DRAM和CMOS器件集成提供了新方案。

荷塘阅色 2454

error LNK2019 无法解析的外部符号 deflate

error LNK2019 无法解析的外部符号 deflate

hfdgjhv的博客 1767

笔记——Oracle19c

Oracle阅读笔记

weixin_63819458的博客 1348

计算机应用数学--第一次作业

中科大 计算机应用数学 第一次作业

一杯水果茶!足矣~ 1328

LNK2019 无法解析的外部符号,一种新的思路

LNK2019无法解析的外部符号,一种新的情况

izwmain的博客 1105

国科大作业考试资料《人工智能原理与算法》2024新编-第三次作业整理

1. 你的目标是让机器人走出迷宫。机器人面朝北,开始位置在迷宫中间。你可以让机器人转向面朝东、南、西或北。你可以让机器人向前走一段距离,在撞墙之前它会停步。 (1)将问题形式化。状态空间有多大? (2)在迷宫中游走,在两条路或更多路交叉的路口可以转弯。重新形式化这个问题。现在状态空间有多大? (3)从迷宫的任一点出发,我们可以朝四个方向中的任一方向前进直到可以转弯的地方,而且我们只需要这样做。重新对这个问题进行形式化。我们需要记录机器人的方向吗? 2. 传教士和野人问题

MatsumotoChrikk 984

Error LNK2001 无法解析的外部符号 的几种情况及解决

今天写了一个小程序,然后碰到了“Error LNK2001 无法解析的外部符号”这个问题,一直解决不了,后来上网搜了下,发现这里面的关于这类错误的内容归纳比较齐全,就摘下来作为参考了。      原文: http://wenku.baidu.com/view/8f0e877931b765ce0508141a.html           VC++时经常会遇到链接

qq_39836658的博客 2万+

001、Zephyr RTOS简介与历史背景

本文介绍了Zephyr RTOS的特点及其在嵌入式开发中的应用。作者通过亲身经历比较了Zephyr与传统RTOS的差异,重点分析了Zephyr的设备树、统一驱动模型、基于CMake的构建系统、POSIX兼容层等核心特性。文章详细阐述了Zephyr在内核设计上的优势,如中断处理模型、内存管理等,并提供了社区生态和使用建议。作者建议开发者从简单项目入手逐步掌握Zephyr,同时指出了常见的使用问题和适用场景,认为Zephyr特别适合复杂软件架构的物联网和工业控制项目。

m0_50546716的博客 154

Ubuntu Rtx3090 Cuda11.7 安装 pytorch3d

pytorch ubuntu pytorch3d 安装

G果的博客 2273

Cherno 游戏引擎GLFW窗口踩坑:error LNK2019: 无法解析的外部符号 _glfwSelectPlatform,函数 glfwInit 中引用了该符号(类似报错)

希望能帮到大家啊,如果有在学的可以多钻研钻研,我也同步了一个Github仓库() ,里面也有自己做的笔记。如果是刚进入Github大家庭的兄弟,点击commit可以查看每一次提交的代码,这样方便对比代码。最后,真的希望能帮助到你!

m0_74242407的博客 3347

【Python LeetCode 专题】面试经典 150 题

面试经典 150 题

一杯水果茶!足矣~ 1173

error LNK2019: 无法解析的外部符号

OsProcessDlg.obj : error LNK2019: 无法解析的外部符号 "public: struct pcb * __thiscall CLinkQueue::InitialPcb(class ATL::CStringT > >,int,int)" (?InitialPcb@CLinkQueue@@QAEPAUpcb@@V?$CStringT@DV?$StrTraitMFC_DL

hanbingshi1122的专栏 1898

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

cv::imwrite无法解析的外部符号解决办法

  无法解析的外部符号的一般解决思路可以参考这篇文章。这里主要针对cv::imwrite这个函数,报错内容如下图所示: 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2019 无法解析的外部符号 "bool __cdecl cv::imwrite(class cv::String const &,class cv::debug_build_guard::_InputArray const &,class std::vector<int,class std::alloca

zeeq的博客 8787

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

error LNK2001: 无法解析的外部符号 问题解决思路

在引用了第三方库的lib时发生了一个错误如下: error LNK2001: 无法解析的外部符号 “public: static void __cdecl google_breakpad::ExceptionHandler::HandlePureVirtualCall(void)” 首先确保引用了lib文件,其次打印出lib的函数表: “C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.2702

u011018840的博客 7936

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

error link2001 无法解析的外部符号

C++菜鸟一枚,使用C++时,经常会碰到的一个问题:error link2001 无法解析的外部符号。虽然经常出现,但每次好像原因又都不同。在此凭回忆记录一下,以供下次出现问题时排查。1. 包含目录和库目录有问题(多了或者少了或者错了);2. 未声明命名空间;3. 基类声明了虚函数,仅派生类对此定义不可以,也需要在基类中进行定义;4.附加依赖项中的输入lib少了或者不对5. 自己定义库的时候未声明...

VivienFu的专栏 2525

VS+QT无法解析外部符号解决思路

A子工程编译报错:“无法解析的外部符号c::c1在b::b1中引用”,c1为子工程C中c类中函数,b1为子工程B中b类中函数。A调用B,B调用C。b中是否正确引用c头文件?A、B项目属性中依赖项C.lib是否添加?A、B项目属性中包含目录是否添加?项目生成依赖项是否添加?QT库是否添加?A子工程调用B子工程,B子工程中包含QT_XXX库 =》A工程也需要包含该库。

Rainbow 1107

【UE5】找报错思路。类似“error LNK2019: 无法解析的外部符号……”

error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: static class FHttpModule & __cdecl FHttpModule::Get(void)" (_imp?结论(暴论):看error LNKxxx的第一个句子,很有可能是报错关键。然后得出是http的问题,要在build模块中添加http模块。起初报错,不懂怎么解决,看着就很棘手的样子。可能只适用于个别例子。可能只适用于个别例子。可能只适用于个别例子。

weixin_56537692的博客 2175

error LNK2019: 无法解析的外部符号 _deflate

我 1>Gzip.obj : error LNK2019: 无法解析的外部符号 _deflateEnd  1>Gzip.obj : error LNK2019: 无法解析的外部符号 _deflate 1>Gzip.obj : error LNK2019: 无法解析的外部符号 _deflateInit2_ 1>Gzip.obj : error LNK2019: 无法解析的外部符号 _infl

friendan的专栏 1万+
上一篇: g++命令
下一篇: const 修饰指针
SimpleForest
博客等级 码龄10年 171粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值