QT中LNK2019:无法解析的外部符号(QT调用VS生成的动态库时)
逻辑先行:在Visual Studio中生成DLL时,编译器会生成一个 .lib 文件(导入库)和一个 .dll 文件。.lib 文件包含符号表,用于链接时解析外部符号,而 .dll 文件包含实际的实现。也就是我们需要调用外部导入库中的函数时,一般需要下面三个文件:
1、对应的头文件(.h文件):这个在使用函数时一般在对应的代码文件上面包含一下该头文件,该头文件的的路径一般有两种方法,一种是直接和要引用的那个项目的头文件源文件放一起,一种是放在一个自己选择的文件夹中,但是要配置项目的包含目录,不然项目中有地方要引用的人时候找不到该头文件对应的路径。
2、 .lib 文件(导入库):该文件包含符号表,是在链接时解析外部符号时所使用的,可以理解为类似于一个索引作用。
3、.dll 文件:该文件包含了实际函数的实现过程,可以理解成我们常规项目中的.Cpp文件。
通过上面的介绍可以知道,这三个文件缺少一个,或者需要调用他们的项目没有配置好路径(也就是项目说找不到上面三个文件对应的位置),都是无法正常调用库中的函数的。
针对以上情况,把常见的错误列举如下:
1、首先,必须保证.h文件、.lib 文件、dll 文件都准备好了(具体怎么用VS生成可以看往期教程)。
2、在Qt项目中正确链接导入库
为了在Qt项目中使用这些导出的函数,你需要确保在Qt项目中正确链接生成的 .lib 文件。
修改 .pro 文件:在你的Qt项目的 .pro 文件中添加链接库的路径和库名。例如:
# 添加库文件所在的路