大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
错误提示
LNK 2019 错误,其实早找我之前就遇到过:C++ Book Note – LNK 2019
咋一看,懵了(不过后来经过自己细看了一下函数签名后,发现是有提示相关内容的,(void) 就是关键,但这后面紧随的又有一个 (??0?$ReferCounter@VMesh@my_util@@my_util@@QAE@XZ) 的函数签名让我看的眼花缭乱,导致错过了关键的诊断内容))
原因
LNK == Link,就是链接器相关的处理错误问题,链接器主要处理接口符号的地址。
如果有一个接口声明了(定义了符号)但是找不到接口的定义(分配的代码地址的),那就会报这个错误。
如下图, ReferCounter
类中的 构造与析构 函数定声明了,但由于之前误删了这两个函数的定义,导致没有这两个函数的具体定义,而出现的错误提示
因为 错误栏的提示不醒目,所以后来放到代码块上查看就清晰很多了。
但是这个内容在 VS的错误栏上的提示很不醒目,可以是没有对应字符着色的问题,然而我放到 C++ 代码块上查看时就,清晰很多了,如下:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 "public: __thiscall my_util::ReferCounter<class my_util::Mesh>::ReferCounter<class my_util::Mesh>(void)" (??0?$ReferCounter@VMesh@my_util@@@my_util@@QAE@XZ),函数 "public: static void __cdecl my_util::ReferMgr<class my_util::Mesh>::setObj(char const *,class my_util::Mesh *)" (?setObj@?$ReferMgr@VMesh@my_util@@@my_util@@SAXPBDPAVMesh@2@@Z) 中引用了该符号 10_Wrapping_Obj_GO_ETC D:\jave\Work Files\CPP\OpenGL_Studies\LearnGL\10_Wrapping_Obj_GO_ETC\Main.obj 1
总结
以后再遇到 LNK 2019 的编译错误问题,如果看不清晰错误栏的提示,就复制出来,放到 VS或是VSC (有C++代码着色器的文本编辑器都可以)下,查看代码着色器的醒目提示的错误函数名,就可以看快速的定位问题了。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185689.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...