qt链接CyAPI.lib时遇到的问题总结

1. 背景

上位机软件使用CyAPI.lib打开usb设备以及与usb设备进行交互

2. 在pro文件中添加静态库,一直提示找不到符号

2.1. 错误发生

qt添加如下

LIBS += -L$$PWD/third_party/lib/x86/ -lCyAPI

报错如下
在这里插入图片描述

2.2. 原因

cypress的FX3套件里给的cyapi是msvc编译的,如果QT使用的是mingw编译器,要用mingw重新编译一次,或者整个项目使用MCSC进行编译。

2.3. 解决历程

将qt的编译设置成使用MVSC进行编译
在qt的组件中下载MVSC的相关组件,在qt上方菜单 工具->选项->Kits->构建套件 中选择检测到的MVSC的环境
在这里插入图片描述

2.3.1. 构建套件Kits MVSC中出现黄色感叹号

原因:缺少windows debug工具
下载方式:
在控制面板->程序和功能中 找到你的 windows sdk ,选择更改 , 弹出对话框选择 change,next,弹出对话框勾选Debugging Tools for Windows , Change,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
之后就可以成功检测到MVSC的相关套件

2.3.2. 构建套件的红色感叹号

在这里插入图片描述
在这里插入图片描述

可能是编译器选择不对,选择对应的编译器
在这里插入图片描述

配置对就能找到了

2.3.3. 上边的环境配置成功后,可能对已有项目的编译报语法错误,但是在使用mingw编译时是正常的

原因是两种编译使用的默认编码格式不同

  1. 默认编码格式:MSVC使用Windows默认的ANSI编码(通常是GBK或CP1252),而MinGW使用UTF-8作为默认的源文件编码格式。这意味着在使用这两个编译器时,源代码文件中的字符编码默认情况下是不同的。
  2. 字符串常量的编码格式:MSVC使用Windows默认的ANSI编码来解析字符串常量,而MinGW使用UTF-8编码来解析字符串常量。这意味着在源代码中使用的字符串常量的编码格式在这两个编译器中可能会有所不同。
  3. Windows API调用的编码格式:由于MSVC是Windows平台的官方开发工具链,它的Windows API调用默认使用Windows默认的ANSI编码。而MinGW是基于GNU工具链的开发环境,它的Windows API调用默认使用UTF-8编码。因此,在使用这两个编译器时,需要注意Windows API调用的编码格式,以确保正确传递和处理字符串参数。
    将项目的编码格式替换载入,按编码保存就可以正常编译了。

2.3.4. LNK2019: 无法解析的四个外部符号

在这里插入图片描述

在.h 添加3个lib

#pragma comment(lib,"SetupAPI.lib")
#pragma comment(lib,"User32.lib")
#pragma comment(lib,"legacy_stdio_definitions.lib")

CyAPI.lib由Cypress提供;
SetupAPI.lib和User32.lib;可在C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\x86目录下找到。legacy_stdio_definitions.lib文件可在C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x64目录下找到。
我的代码是
在这里插入图片描述

添加后可以成功将CyApi.lib添加到项目,并成功链接到符号。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值