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();
}