关于Visual Studio的Linker Tools Error LNK2001

基于Windows的SDK制作了示例程序,再构建解决方案时出现如下错误:
在这里插入图片描述

1.首先咨询了ChatGPT:

问: What does it mean when “LNK2001 unresolved external symbol “public: enum TUCAMRET __cdecl CameraManager::CloseCamera(void)” (?CloseCamera@CameraManager@@QEAA?AW4TUCAMRET@@XZ)” happened in Visual Studio?

答:
您看到的错误消息 LNK2001 未解析的外部符号,通常表示有一个函数声明(在您的情况下为 CameraManager::CloseCamera()),但它的定义(实现)在编译过程中缺失或未正确链接。

以下是错误消息各部分含义的详细说明:

(1) LNK2001: 这是来自 Visual Studio 链接器的错误代码。LNK2001 具体指无法解析的外部符号,这意味着存在函数或变量声明,但链接器无法找到其定义(实际实现)。

(2) 这个语句:

unresolved external symbol "public: enum TUCAMRET __cdecl CameraManager::CloseCamera(void)" (?CloseCamera@CameraManager@@QEAA?AW4TUCAMRET@@XZ)

这部分错误信息指出链接器找不到“CameraManager::CloseCamera()”。

可能的原因:

<1> Missing Implementation(执行缺失):
最常见的原因是,应该实现 CameraManager::CloseCamera() 的 .cpp 文件不存在,或者不包含该函数的实现。

<2> Incorrect Function Signature(函数签名不正确):
如果声明(在头文件 .h 或 .hpp 中)与实现(在 .cpp 文件中)不匹配,例如返回类型或参数列表不同,则链接器将无法解析该符号。

<3> Linker Settings(链接器设置):
有时,包含实现的文件(本例中为 CameraManager.cpp)可能未包含在 Visual Studio 项目设置中要编译和链接的源文件列表中。请确保项目中包含所有必需的文件。

解决办法:
第一步: 检查执行,验证“CameraManager::CloseCamera()”的实现就在合适的.cpp文件中。
第二步,如果您使用外部库或依赖项,请确保它们正确链接并包含在您的项目设置中。
第三步,清理并重建您的解决方案以确保所有更改都得到正确传播。

解决方案:
很简单,在选择配置属性->链接器->输入在“附加依赖项”中填写.lib文件的完整路径而不是光写个文件名就行了,就像这样:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值