VS 出现LIK2001:无法解析外部符号几种情况及解决办法

在开始这个话题之前,非常想吐槽一下VS 2010,因为今天在封装一个静态库时就出现了这个情况,之前也是遇到过这个情况,以为是跟以往出现的情况是一样的,按照着往常的解决思路查找了一遍问题所在,发现完全没有问题啊,冥思苦想了大半天,换了N种骚操作外加三千青丝又掉了不少,我终于是发现了问题所在,忍不住的爆了个粗口,坑爹的VS。直接进入正题,将我所遇到过出现这个请况的原因和解决方法一一道来。

1.引入第三方库时出现

在引入第三方库是,需要指定依赖项配置,若没有这些配置,就会出现LINK2001的错误。

这是最常见的错误了,配置步骤如下:
项目》》属性》》链接器》》常规》》添加附加库目录 ,添加第三方库所在的目录
项目》》属性》》链接器》》输入》》附加依赖项, 写入第三方库的名称

2.被引入的库和引入的库的编译平台不一致

引入的库和被引入的库的编译平台不一致,就比如一个在VS2010编译生成的库,一个是在VS2008编译生成的库,就可能导致该问题出现。

3.引入第三库时是否有添加第三方库指定的编译宏

这中情况的出现,往往是引入别人的库所导致的,因要了解是否需要该库指定编译宏

4.我所遇到的坑爹情况,静态库编译时生成的.obj是其他项目的信息

之前说过我是为了封装静态库给动态库来使用的,我没有重新新建一个项目,而是直接复制在该工程下之前我做过得静态库项目,就这样我新的静态库封装好了,编译也成功了,看似好像是啥问题都没有了,可以给在动态库里引用了,看来今天是可以按时下班了。动态库引用,编译。额,出现了这些错误提示,还好,这些以前都遇到过,咱不怕。MMMM…
大半天过去了,彻底的击碎了不加班的美梦。按照前面三种出现的原因都查找了N遍还有去查看静态库里的函数有没有正确,发现都没有问题。

究竟是咋回事呢,我抱着试一下的心态查看了静态库编译生成的.obj文件,发现提示的无法解析的变量和函数所在的.obj文件都不正常,其内容是复制的项目相对应的内容,wtf ! 怎么一回事,难道是VS抽风了咋的。话不多说,找到原因所在,就开始动手将这些文件删除再新建,然后编译链接到动态库,望着生成动态库成功的这几个,无言半天,这坑爹操作耗费了我大半天的时间。

我想了想出现的原因可能是我在该工程下,复制另一个项目作为新的项目开始造成的问题。

总结:
1、在引入第三方库时一定要设置项目的依赖项配置。
2、保证引入库和被引入库的编译平台是一致的。
3、引入的第三方库是否需要指定编译宏
4、编译的生成的.obj里面的内容是否正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值