Qt Creator / VS+Qt 调用 Qt库 时报 LNK2019

本文详细描述了在使用QtSerialPort库时遇到的LNK2019链接错误,涉及Win10环境、Qt Creator 4.5.0和VS2015的配置,包括.pro文件库添加、Qt5.10.0的处理,以及在QtCreator和VS2015中修复编译问题的方法。
环境信息
电脑系统:Win10
Qt Creator:V4.5.0
Qt:V5.10.0(MSVC 2015,32bit)
VS:VS2015

问题描述

        在使用 #include <QtSerialPort/QSerialPortInfo> 来搜索电脑当前的串口信息时,编译出现 LNK2019 的链接错误:


IDLE:Qt Creator

        首先检查工程配置文件 .pro 是否已经添加了所应用的库:

        

        确定已在 .pro 中添加了对应库,还编译出现 LNK2019 的错误,则尝试如下办法(两个办法同一个意思,都是为了重新进行 qmake 生成 makefile 文件,使项目在编译时能正确连接到响应的库,具体可以看 makefile 的内容):

方法一:

        点击菜单栏的 “构建” 一项,选择 “执行qmake”:

        然后再重新编译运行,便可正常运作。

方法二:

        选择左侧的 “项目” 一栏,查看项目构建信息所在文件夹:

         删除该文件夹,再回到 Qt Creator 重新编译运行即可。


IDLE:VS2015

        没有添加对应库的 lib 库,点击菜单栏中的 “项目”->“***属性”

        选择 “链接器” -> “输入” -> “附加依赖项”,添加所调用的库的 lib 库即可,这里因为是配置 “Debug”,因而是 “Qt5SerialPortd.lib”。如果是配置 Release,则是 “Qt5SerialPort.lib”,少了代表 Debug 的字符 d。

         添加完毕后,点击 “确定” -> “应用”,再重新生成解决方案运行即可。

### LNK2019 错误的解决方法 在 Qt Creator 中遇到 **LNK2019:无法解析的外部符号** 错误时,通常是由于链接器无法找到函数或变量的定义。以下是几种常见的解决方法: #### 1. 清理并重新构建项目 有时,编译过程中生成的中间文件可能已损坏或不一致,导致链接失败。可以尝试以下步骤: - 删除项目的 `build` 文件夹。 - 在 Qt Creator 中选择 **Build > Clean All**。 - 然后选择 **Build > Run qmake**。 - 最后选择 **Build > Rebuild All**。 此操作可以确保所有中间文件被清除并重新生成,避免因旧文件残留导致的链接错误[^1]。 #### 2. 检查函数声明与定义 LNK2019 错误通常是因为函数的声明与定义不匹配。可以按照以下步骤排查: - 查看错误信息中提到的具体函数名。 - 在项目中全局搜索该函数的声明和定义。 - 确保函数的声明和定义在参数类型、返回值类型以及调用约定(如 `__stdcall` 或 `__cdecl`)上完全一致。 如果发现不一致的地方,修改后重新编译项目。 #### 3. 添加缺失的文件 如果错误信息中包含类似 `__imp__glAlphaFunc` 的符号,这可能意味着缺少必要的文件。可以通过以下方式解决: - 在 `.pro` 文件中添加所需的文件路径和名。例如,添加 OpenGL : ```qmake LIBS += -lOpenGL32 ``` 确保名和路径正确无误,且没有多余的空格。如果文件位于特定路径中,可以使用 `-L` 指定路径,例如: ```qmake LIBS += -L"D:/qt/sumaandb/build-sumaandb-Desktop_Qt_5_12_0_MSVC2017_64bit-Debug/debug" -lDll1 ``` 注意路径中不要包含空格,否则可能导致其他链接错误[^2]。 #### 4. 检查 DLL 和的兼容性 如果项目依赖于外部的 DLL 文件,确保 DLL 的导出函数与项目中的声明一致。可以通过以下方式验证: - 使用工具(如 Dependency Walker)检查 DLL 的导出函数。 - 确保项目中调用的函数名和参数与 DLL 的导出函数完全匹配。 如果发现不一致,可能需要重新编译 DLL 或调整项目的调用代码[^2]。 #### 5. 检查编译器和链接器设置 确保项目的编译器和链接器设置正确: - 在 Qt Creator 中,选择 **Projects > Build Settings**。 - 检查编译器选项是否与目标平台(如 32 位或 64 位)匹配。 - 确保链接器选项中包含了所有必要的文件。 如果设置有误,调整后重新编译项目。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值