C++ 编译错误:LNK 2019

错误提示

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++代码着色器的文本编辑器都可以)下,查看代码着色器的醒目提示的错误函数名,就可以看快速的定位问题了。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Windows 下使用 C++ 编程语言,如果在使用 HDF5 1.12.2 版本库时缺少必需的库文件,可能会出现链接错误,例如 LNK2019 错误。这种错误通常表示编译无法找到所需的库文件。 对于 HDF5 库而言,如果缺少 hdf5_cpp.lib 库文件,则会出现类似以下的链接错误: ``` error LNK2019: unresolved external symbol "public: static class H5::FileAccPropList const & __cdecl H5::FileAccPropList::DEFAULT(void)" (?DEFAULT@FileAccPropList@H5@@SAABV12@XZ) referenced in function ... ``` 这种错误提示表示链接器找不到 H5::FileAccPropList::DEFAULT 函数的实现。解决此问题的方法是在项目中添加缺少的库文件,即 hdf5_cpp.lib。 需要注意的是,HDF5 1.12.2 版本库中的库文件名称可能与之前版本不同。在 HDF5 1.12.2 版本中,hdf5_cpp.lib 被拆分成了多个库文件,需要同时链接以下库文件: - hdf5_cpp.lib:HDF5 C++文件; - hdf5.lib:HDF5 C 库文件; - zlib.lib:zlib 压缩库文件; - szip.lib:szip 压缩库文件; - hdf5_tools.lib:HDF5 工具库文件; - hdf5_hl_cpp.lib:HDF5 高级 C++文件; - hdf5_hl.lib:HDF5 高级 C 库文件; - hdf5_serial.lib:HDF5 序列化库文件。 在 Visual Studio 等集成开发环境中,可以通过以下方式将这些库文件添加到链接器的附加依赖项中: - 右键点击项目,选择 “属性”; - 在左侧窗口中选择 “链接器” -> “输入”; - 在右侧窗口中的 “附加依赖项” 中添加上述库文件的路径和名称,例如:hdf5_cpp.lib;hdf5.lib;zlib.lib;szip.lib;hdf5_tools.lib;hdf5_hl_cpp.lib;hdf5_hl.lib;hdf5_serial.lib。 完成以上步骤后,重新编译项目,即可解决此问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值