Error LNK2001 无法解析的外部符号

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

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

 今天写了一个小程序,然后碰到了“Error LNK2001 无法解析的外部符号”这个问题,一直解决不了,后来上网搜了下,发现这里面的关于这类错误的内容归纳比较齐全,就摘下来作为参考了。

     原文: http://wenku.baidu.com/view/8f0e877931b765ce0508141a.html

          VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难。   初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为:   unresolved   external   symbol   “symbol”(不确定的外部“符号”)。如果连接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误消息。一般来说,发生错误的原因有两个:一是所引用 的函数、变量不存在、拼写不正确或者使用错误;其次可能使用了不同版本 的连接库。   

    以下是可能产生LNK2001错误的原因:   

    一.由于编码错误导致的LNK2001。   

 

  1.不相匹配的程序代码或模块定义(.DEF)文件能导致LNK2001。例如,  如果在C++   源文件内声明了一变量“var1”,却试图在另一文件内以变量 “VAR1”访问该变量,                   将发生该错误。   

 

  2.如果使用的内联函数是在.CPP文件内定义的,而不是在头文件内定义将导致LNK2001错误。 

  

  3.调用函数时如果所用的参数类型同函数声明时的类型不符将会产生LNK2001。   

 

  4.试图从基类的构造函数或析构函数中调用虚拟函数时将会导致LNK2001。   

 

          5.要注意函数和变量的可公用性,只有全局变量、函数是可公用的。静态函数和静态变量具有相同的使用范围限制。当试图从文件外部访问任何没有在该文件内声明的静                态变量时将导致编译错误或LNK2001。函数内声明的变量(局部变量)   只能在该函数的范围内使用。C++   的全局常量只有静态连接性能。这不同于C,如果试图在                C++的多个文件内使用全局变量也会产生LNK2001错误。一种解决的方法是需要时在   头文件中加入该常量的初始化代码,并在.CPP文件中包含该头文件;另一                        种 方法是使用时给该变量赋以常数。   

 

 

    二.由于编译和链接的设置而造成的LNK2001   

  1.如果编译时使用的是/NOD(/NODEFAULTLIB)选项,程序所需要的运行库和MFC库在连接时由编译器写入目标文件模块,   但除非在文件中明确包含这些库名,否                   则这些库不会被链接进工程文件。在这种情况下使用/NOD将导 致错误LNK2001。 

  

  2.如果没有为wWinMainCRTStartup设定程序入口,在使用Unicode和MFC时将得到“unresolved   external   on   _WinMain@16”的LNK2001错误信息。

   

  3.使用/MD选项编译时,既然所有的运行库都被保留在动态链接库之内,源文件中对“func”的引用,在目标文件里即对“__imp__func”   的引用。如果试图使用静态LIBC.LIB                  或LIBCMT.LIB进行连接,将在__imp__func上发生LNK2001;如果不使用/MD选项编译,在使用MSVCxx.LIB连接时也会发生LNK2001。   

 

  4.使用/ML选项编译时,如用LIBCMT.LIB链接会在_errno上发生LNK2001。 

  

  5.当编译调试版的应用程序时,如果采用发行版模态库进行连接也会产生LNK2001;同样,使用调试版模态库连接发行版应用程序时也会产生相同的问题。   

 

  6.不同版本的库和编译器的混合使用也能产生问题,因为新版的库里可能包含早先的版本没有的符号和说明。   

 

  7.在不同的模块使用内联和非内联的编译选项能够导致LNK2001。如果创建C++库时打开了函数内联(/Ob1或/Ob2),但是在描述该函数的相应头文件里却关闭了函                   数内联(没有inline关键字),这时将得到该错误信息。为避免该问题的发生,应该在相应的头文件中用inline关键字标志内联函数。   

 

  8.不正确的/SUBSYSTEM或/ENTRY设置也能导致LNK2001。  

 

    其实,产生LNK2001的原因还有很多,以上的原因只是一部分而已,对初 学者来说这些就够理解一阵子了。但是,分析错误原因的目的是为了避免错误的发生LNK2001错误虽然比较困难,但是只要注意到了上述问题,还是能   够避免和予以解决的。 

 

error LNK2001 :无法解析的外部符号 __report_rangecheckfailure 1.根本原因 原因:__report_rangecheckfailure是用来检查堆栈缓存溢出的,如果编译的时候打开GS(project property--》Configuration properties--》c/c++--》Code generation--》Buffer security check)选项时(GS编译选项解析),编译器将为你加入检测函数堆栈缓存溢出错误额外代码。具体实现在window下的运行时库文件msvcrt.dll中。而这些检查堆栈缓存溢出的代码中在msvcrt11.dl... 阅读详情

相关推荐

error LNK2019: 无法解析的外部符号 问题的解决办法

正在编译…1>Ipv4IPv6traceroutesrc.cpp1>d:\研究生\c++\study\test\test\ipv4ipv6traceroutesrc.cpp(461) : warning C4267: “参数”: 从“size_t”转换到“DWORD”,可能丢失数据1>d:\研究生\c++\study\test\test\ipv4ipv6traceroutesrc.cpp(1131) : warning C4267: “参数”: 从“size_t”转换到“int”,可能丢失数据1>d:\研究生\c++\study\test\test\ipv4ipv6traceroutesrc.

VS编译报错 “无法解析的外部链接符号“

如果你已经排查了代码的各种问题,仍然不能解决,这里提供一种特别小白的一种情况。这种情况千年一遇,被我这个小白遇到了,还困扰了很久不能解决。如果没有添加,也是编译不通过的。检查一下你的VS项目中有没有添加相关的。

酸梅果茶的博客 2161

TLSR8258蓝牙Mesh实战:从SDK下载到自定义通信指令全流程(附避坑指南)

本文详细介绍了TLSR8258蓝牙Mesh开发的完整流程,从SDK下载、环境搭建到自定义通信指令的实现。通过实战案例和避坑指南,帮助开发者快速掌握低功耗蓝牙Mesh网络构建技巧,适用于智能家居、工业监控等物联网场景。

weixin_29176179的博客 199

LNK2001: 无法解析的外部符号的几种情况

error LNK2001: 无法解析的外部符号无法解析几种情况: 1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _printf 已经在 libcurl.lib(pqueue.obj) 中定义 1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _fprintf 已经在 libcurl.lib(pem_lib.o...

Keep Moving~ 10万+

5分钟搞懂超分算法:从插值到深度学习的实战对比(附Python代码)

本文系统对比了从传统插值到深度学习的主流超分算法,包括最近邻、双线性、双三次插值,以及基于边缘、统计模型和SRCNN、ESPCN、SRGAN等深度学习模型。通过实战代码和决策框架,帮助开发者根据图像质量、速度、资源等需求,快速选择最合适的超分辨率算法,实现从低清到高清的有效转换。

pp12345的博客 429

GraphRAG 与 HippoRAG 深度对比:在 RAGFlow 中如何选择知识图谱方案?

本文深入对比了GraphRAG与HippoRAG在RAGFlow中的知识图谱构建方案,分析了两者在技术架构、资源消耗和场景适配性上的核心差异。GraphRAG适合需要快速响应和资源有限的场景,而HippoRAG则更适用于精确关系推理的专业领域。文章还提供了RAGFlow的演进路线和选型决策框架,帮助架构师根据实际需求做出合理选择。

weixin_27889245的博客 247

openGL产生的 error LNK2001: 无法解析的外部符号 __imp_glBegin

1.这是CUDA文件没编译的原因,在http://blog.csdn.net/u013422712/article/details/49498055有具体说明 2.相应的lib文件在链接器中添加 如果报lib缺失,可能需要添加#pragma comment(lib, "glu32.lib") cuda版本也有可能引起上述错误,我用cuda8.0版本没有编译过去,但是用cuda7.5成

jianxiutang7159的博客 9688

半导体设备微振动控制:天棚阻尼PID与SIMULINK建模实战

半导体制造设备对微振动的敏感度已进入纳米级,光刻机、量测设备等一旦遭遇超过VC-C振动准则的扰动,便会出现套刻误差或检测误判。主动隔振技术通过传感器、控制器与执行器形成闭环,能有效抑制低频共振,其中天棚阻尼控制因物理概念清晰、鲁棒性强而成为工程首选。结合MATLAB/SIMULINK建模,可在设计阶段完成系统性能边界评估与参数整定,再通过C代码生成与FMU导出实现算法向控制器和跨平台仿真迁移。本文从VC-C指标拆解出发,依次讲解天棚阻尼PID控制原理、两自由度被控对象建模、控制增益估算、仿真验证方法,并给出

weixin_29169505的博客 326

c++ error LNK2001: 无法解析的外部符号

error LNK2001:无法解析的外部符号 xxxxxx

做减求空 1万+

告别JSON!Anthropic发布Tool Calling 2.0,Agent上下文消耗骤降80%

Anthropic发布ToolCalling 2.0更新,彻底革新AI Agent开发模式。四大核心特性:1)程序化工具调用,允许模型直接输出可执行代码替代JSON交互,降低30-50%Token消耗;2)动态网页过滤,自动清洗网页内容减少24%无效信息;3)工具搜索机制,按需加载工具定义,最高优化80%上下文窗口;4)工具使用示例,通过Few-Shot示范提升复杂表单处理准确率至90%。这一升级将Agent范式从"大模型作为路由"推进到"大模型作为引擎",但需注意代

老孙 | Ethan Sun 的博客:AI 智能体与 AI 原生软件的工程实践 794

【数据集】全球湿度数据集总结

【数据集】全球湿度数据集总结

WW、forever的博客 1661

【VS2019 C++】error LNK2001: 无法解析的外部符号

记录vs2019运行出现“error LNK2001: 无法解析的外部符号” 和 “fatal error LNK1120: 1 个无法解析的外部命令”就会出现这个错误,此处不能定义为static。在.cpp文件中定义。

h151830的博客 415

开源GIS -- 笔记

基础开发库 数据读写:GDAL/OGR(C/C++) ArcGIS和GE都是使用此工具 投影转换:Proj.4(C/C++) 拓扑计算:JTS(Java),GEOS(C++),Shapely(python) 组件式开发库 GeoTools(Java),DotSpatial(.NET) 空间分析: Scipy(通用科学计算、方程求解), numpy,NextworkX, rPy(统计分析), Scikit-learn,pysal(空间分析) 深度学习: Keras、 tensorflow、 pytor

DZ Space 4521

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

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

qq_39836658的博客 2万+

修改yolov8使支持单通道图像输入

默认支持BGR三通道图像输入,但是在很多工业场景下,存在很多灰度图像的场景,因此对yolov8代码做一些修改以支持单通道图像输入,满足项目实际需求。训练时,只需要在 data 的 yaml 文件中,添加 ch=1 即可。

mingo_敏 5779

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

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

https://blog.csdn.net/shenyulv/article/details/6699836

aboy2018的博客 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

error LNK2001: 无法解析的外部符号 "public: static int __cdecl

zhanghuan_wangkai的博客 7515

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

    VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难。   初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为:   unresolv

微笑的艾米 1463

error LNK2001 无法解析的外部符号

出现此错误是在调用函数的地方,无法看清函数真实的面貌导致的,常见的就是头文件或者lib的包含问题,再可能是自定义变量导致的问题,一定要在调用函数前声明过自定义变量,还有就是在调用函数的地方检查调用方的头文件中是否需要声明class名,struct名等。dll链接其他库函数的问题。

ELCstar的专栏 512

error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public 解决办法

0 写在前面 最近再在搞vs下面工程的时候,出现了以下的报错 报错显示为: error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public 解决办法。 1 解决办法 这种问题一般是没有正确添加lib库导致的,依我所用的visual studio 2019为例。主要需要改动的地方有两个地方。 首先需要改动:链接器 -> 常规 -&g...

qq_33221533的博客 3万+

OpenGL配置时error LNK2001: 无法解析的外部符号 _glad_glViewport解决办法

在跟着LearnOpenGL CN学习OpenGL学习时,在 你好,窗口 这一步,全文中源代码复制过来的时候会出现 error LNK2001: 无法解析的外部符号 _glad_ 这类错误 解决办法就是,添加现有项中把 glad.c 添加进来 ...

qq_27931977的博客 5100
上一篇: lnk2001 无法解析的外部符号 的几种情况及解决办法
下一篇: 程序封装_随记(1)
bendangth
博客等级 码龄11年 1粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值