VS报错:error LNK2019:无法解析的外部符号

 

运行vs程序时候,一般会出现这个错误 :

图片

报错原因

其实就是编译器找不到对应的函数实现,对应的函数编译器也已经提醒我们了,比如说这里就是这个参数为(int, int),返回值为int,函数名为add的函数

图片

解决方法

既然知道报错原因是编译器找不到对应函数定义,那我们就来解决这个函数定义的问题,要么定义函数,要么让编译器可以找到定义,这里也分两种情况:

l头文件内声明的函数

l库文件内定义的函数

头文件内声明的函数

我们先来看头文件内声明函数的情况,这种情况就是我们已经在头文件内声明了这个add函数,但是我们并没有添加这个函数定义,也就是声明了没有实现

我们先在调用处,右键对应函数,然后转到声明

ctrl+左键也一样

图片

VS内指到带有波浪线的函数上,也会提示你没有找到函数定义

图片

我们来给这个函数定义一下就可以了

图片

可以使用快捷键(鼠标指到未定义函数上),也可以手动创建文件,然后添加函数定义

这个就是我们添加的函数定义,现在有了函数定义,程序就可以正常运行了

图片

图片

库文件内定义的函数

这个情况稍微复杂一点,因为要确定是没加载到库还是库的版本和编译器版本不一致

生成库并且调用

这里创建一个静态库,库内定义一个add函数

图片

图片

图片

我们生成一个Release_x64版本的静态库

这里不使用预编译头

图片

启动生成,下面输出生成库路径

图片

我们把库和头文件拷贝到之前的项目里面,尝试调用add函数

拷贝到了main.cpp的同级目录下

图片

首先设置编译器版本

我们生成库使用的Release_x64,这里也要对应

图片

添加依赖项

图片

添加库目录

库目录就是依赖项内新添加的库的路径

这样配置完成之后,调用就没有问题

图片

找不到库

找不到库就是上面调用库提到的,可能是没添加依赖项,也可能是没添加库目录

在此不添加库目录可能没问题,但是有的库可能不是当前项目路径,建议大家都配置上

未配置库依赖项:

图片

库的版本和编译器版本不一致

这里的版本不一致是指,比如你的库是x64版本,但是你编译器选择的是x86版本

平台选择的x86,但是库是x64,有的VS版本报的错是无法解决的外部符号(这里是VS2022),而且肯定会有提示,说你的库版本和目标平台不一致

图片

其他情况

还有一些情况可能会导致读取不到对应库,比如说可能需要添加对应的预处理器定义,这种情况需要大家自行排查了

这里还有其他资源可以分享给大家,包括从零开始的教程和C语言C++项目案例。这些资源将帮助大家克服学习C语言的困难。点击进入学习社区

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C语言小火车

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值