“error LNK2019: 无法解析的外部符号”的几种可能原因,已解决。

8 篇文章 0 订阅
7 篇文章 0 订阅

环境:Window10 + Visual Studio 2019
也适用于其他版本


究其原因,只不过是程序里用了某个函数,这个函数依赖于某个库文件,然后程序并没有找到这个库文件,所以要么是没添加,要么就是添加错了,没添加请参考第一个办法,添加错误请参考第二个办法。都不行请参考第三个办法。

1. 采用第三方库或者开源库,忘记添加依赖项,添加方法:(建议采用相对路径,关于相对路径请参照博客https://blog.csdn.net/weixin_44330072/article/details/106492533
       解决方案右击→配置属性→C/C++→常规→附加包含目录→(这里添加要包含的头文件的目录,比如include或者inc文件夹)
       解决方案右击→配置属性→链接器→常规→附加库目录→(这里包含库的文件夹,比如libs文件夹)
       解决方案右击→配置属性→链接器→输入→附加依赖项→(这里添加库文件,就是.lib文件)
(上述办法请在属性页顶端确认好相关配置是否对应,是Debug模式还是Release模式,是x86/win32还是x64。比如是在Debug模式下Win32平台。编译运行时候的配置跟设置的配置必须一致。请往下看)
 

2. 确定通过上述办法添加了,还是出现报错,那么请考虑是否添加错误,错误的可能是有如下可能:
       ① debug和release模式的区别,以OpenCV举例,OpenCV的库文件Debug模式和Release模式不一样,后面带d的是Debug需要的库文件,不带d的是Release需要的。例如 opencv_core420d.libopencv_core420.lib


       ② 如上面所示也需要注意32位平台还是64位平台。这时候可能会造成新的报错,如博客:https://blog.csdn.net/weixin_44330072/article/details/106493405
 

3. 上面两种可能性都排除了以后还是仍然报错的话,可以参考本条办法,例如函数 void func() 在外部依赖文件 xxx.cpp(前提是 #include "xxx.h"没有报错,而且 void func()  函数能正常引用,只是运行或者编译时候出现问题。)这种情况一般是在项目属性→C/C++→附加包含目录里面添加了 xxx.h 存在的目录。此时就会出现能正常引用,但是编译时候显示无法解析的外部符号,后面的函数正是前面举例的 void func() 。
       解决方法:只需要将 xxx.h 和 xxx.cpp 添加到项目中,具体办法是 右键项目→添加→现有项,然后添加进来就可以了。
       如果此时出现了更多的“无法解析的外部符号报错”,那一般是证明确实是这种原因,只是因为 xxx.cpp 中某些函数是依赖外部某个文件,需要把这个文件也得添加进来,以此类推,将所有有关文件都添加进来就能解决啦。
       添加现有项的时候推荐,先将此文件复制到项目目录下,然后再添加进来比较好。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值