运行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语言的困难。点击进入学习社区