VS“无法解析的外部符号”的错误场景

4 篇文章 1 订阅

1.引用库时发生错误,例如路径错误或者库名错误等。

项目属性--链接器--常规--附加库目录   指定库的路径

项目属性--链接器--输入--附加依赖项   指定库的名称

 

2.库与库之间存在嵌套调用,引用库时只引用了上层库,没有引用下层库。

例如项目A中调用了静态库a.lib的对外接口func1(),而a.lib中的接口func1()又引用了静态库b.lib中的func2(),但是项目A只引用了a.lib,导致func2()符号无法解析。示意图如下:

这种情况只需要将a.lib和b.lib放在同一目录,例如E:\lib,然后在VS的 项目属性--链接器--命令行 中添加如下命令一次性引入即可:

E:\lib\*.lib

 

3.本项目的项目属性与引用库的项目属性不一致,包括但不限于以下若干项:

(1)平台不一致,例如项目A是64位(x64),而引用的库是32位(x86);

(2)配置不一致,例如项目A是Release模式,而引用的库时Debug模式;

(3)字符集不一致,例如项目A的字符集为“使用UNICODE字符集”,而引用的库的字符集为“使用多字节字符集”;

(4)运行库不一致,例如项目A的运行库设置为“多线程 (/MT)”,而引用的库的运行库设置为“多线程 DLL (/MD)”;

 

4.C++项目引用C库,忘记加extern "C"{}

假设项目A为C++项目,而引用库a.lib全部由C语言编写,包含头文件时需要加上extern "C"{},表示按照C的调用规则传参,如下所示:

extern "C" {
    #include "a.h "
}

#pragma comment(lib,"a.lib")

void main(){

    func1();

}

 

 

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值