“无法解析的外部符号”产生的几种原因

47 篇文章 8 订阅

之前写代码时一直有遇到过这种问题:

无法解析的外部符号"XXX::XXXX",该符号在函数"XXX::XXXX" 中被引用......

其大部分都是由于

1.只声明了函数但并没有实现它。

这种一般都是大意忘记了,第一次编译就会发现。

另外声明了静态变量,没有初始化它也会导致这样的情况发生。


2.声明了函数也定义了函数但其函数参数对不上。

比如项目A中引用了项目B的类,后来修改了项目B中类的成员函数等但A中没改过,导致编译的时候出错。

3.想要让函数或类在其他项目中被引用,需要将该项目中的函数或类导出到库中,具体方法请百度。

于是,在B项目中因为定义了PRJ_B所以其为导出模式,而在A项目中因为没有定义过PRJ_B所以其为导入模式;


4.项目中包含类(lib,dll)的设置路径不正确。

检查工程中路径的设置是否有误。


5.最近发现如果编译模式方式不同 , (比如win32位下编译和64位下编译)也有可能造成编译不过的现象。



6.有的时候debug版本编译会出现问题,但release版本下编译正常。

这个是实际遇到的情况 , 在编译一个关于sqlite3.c的项目的时候 , 总是提醒无法解析的外部符号_ReadWriteBarrier.

但是服务器上一直都有在不停编译的啊wc怎么会出问题呢 , 于是就去msdn上直接查了一下 , 应该是要包含<intrin.h>头文件 .

然后翻了一下发现include <intrin.h>这句被人注释掉了 , 原因是如果包含这个文件的话vs2002环境下编译不过.

这不是主要的 , 问题是服务器为啥能编译过呢...? 然后看了一下 , 服务器上编译版本是release版本的.

那么估计就是msdn只提供了release版本的库吧....

如果有遇到这种情况可以试试换个版本编译。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SunnyFish-ty

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

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

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

打赏作者

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

抵扣说明:

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

余额充值