2025

Qt在Xcode原生Mac Cocoa应用中使用时的Could not find the Qt platform plugin问题

最近在测试Xcode原生Mac Cocoa GUI应用中直接调用Qt GUI时遇到了一个报错找不到native plugin的问题。先记录下操作系统是:macOS 13.4,Xcode版本是:Version 14.3 (14E222b),Qt版本是:6.8.0。用法是在Xcode中新建一个App,interface选的xib(但应该没关系,因为根本没用任何xcode GUI编辑功能),然后在生成的的代码项目中手动加入各种依赖的Qt Framework,并设置好include,lib,rpath等各种路径。代码也是从网上搜到的很简单的创建Qt空间后,通过winId的方式(这是Qt6新改的,以前的Qt5及旧版本需要使用QMacNativeWidget)挂到NSView下,如下:

1
2
3
4
5
6
7
8
9
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Insert code here to initialize your application
    QPushButton* btn = new QPushButton("testtttttttttttt");
    NSView* viewBtn = (__bridge NSView*)((void*)btn->winId());
    [self.window.contentView addSubview:viewBtn];
    btn->show();
    [viewBtn setNeedsDisplay:YES];
    [self.window makeKeyAndOrderFront:self.window];
}

需要注意的是开了ARC后的winId返回到NSView*的cast,c cast,c++ cast直接用都不行,查了半天才找到这种__bridge cast配合强转void*的可行方式。

然后运行,发现了标题中的报错信息:

Continue reading…

docker image pull时频繁出现unauthorized: authentication required问题的一种解决方法

问题现象如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@ci1 ~]# docker image pull wzkres/centos-ci-gcc:centos-7-cross-arm64
centos-7-cross-arm64: Pulling from wzkres/centos-ci-gcc
2d473b07cdd5: Already exists
9d26d6802cad: Pull complete
90f6d29b7c1a: Pull complete
7bfff1b24796: Pull complete
80b3d4546432: Pull complete
c3a37398e8b3: Pull complete
3ba42b3a770d: Pull complete
85b3405c69c4: Downloading
2ad9c2d42a3d: Waiting
5f1b06925eb4: Waiting
4f4fb700ef54: Waiting
57c257cf6173: Waiting
787f48d693d2: Waiting
9f1677804e77: Waiting
c13fd6dc43b4: Waiting
80bd40938514: Waiting
56ba96a89fa8: Waiting
unauthorized: authentication required

在从hub.docker.com拉取公开镜像时,频繁出现标题中提到的错误而失败,出现时间随机,且出现频率非常高,导致稍大些的镜像几乎无法顺利完成下载。一开始以为是网络问题,各种更换“科学”,使用镜像代理均没什么效果,看提示的是“authentication”,还以为是docker hub登录信息的问题,于是也试过docker login -u xxxx,无果…

Continue reading…

基于STM32F1系列MCU实现USB HID鼠标时的开机概率无反应问题

最近在研究基于STM32F103CBT6单片机的USB HID鼠标设备实现,电路部分主要抄自各开源实现,今天要记录的主要是单片机软件方面的问题:测试阶段发现如果在开机前先插好USB鼠标,再开机,有一定概率出现鼠标操作没反应的情况!并且这个现象在我的笔记本(联想thinkbook 14+,支持关机USB充电)上要比台式机(技嘉X570+5700x,前置USB)上出现几率高不少,基本上开3次就能有1次出现这种情况。

先说明下,MCU软件部分主要基于ST的“STM32F10x, STM32L1xx and STM32F3xx USB full speed device library (UM0424)” https://www.st.com/en/embedded-software/stsw-stm32121.html USB库实现,里面有HID实现的例子,基本都是照抄的,改了下Joystick例子的USB描述符,报文相关参数(3按键+1滚轮+XY移动,1ms轮询)。电路部分,一开始实验的时候用的是合宙的AIR32F103,对比STM32F103,支持USB DP的内部1.5k上拉,自己画板制作的时候由于STM32F103没有内部DP上拉,于是简单做了个固定1.5k到3.3v的上拉,做这个设计的过程中已经查到过有些资料参考ST-LINK的设计,应该使用一个GPIO口,通过加NPN开关三极管方式驱动这个1.5k上拉,用于遵守USB 2.0规范约定的设备可枚举信号,同时也根据这个wiki的描述:https://stm32world.com/wiki/STM32_USB_Device_Renumeration ,实测这种通过将DP端口改为PP输出,并拉低50ms左右的非标准做法,也可以实现控制枚举、软件重枚举的功能。于是就没做类似ST-LINK的设计,所以一开始发现标题问题时,以为是这种非标准的USB枚举初始化导致,但是后来通过观察出现问题时的串口日志发现USB初始化枚举都正常,只是在等待轮询取上报数据时出现了问题!

研究了一番后,找到了一个简单的解决方法,加了个超时重置标识变量的方法,如下:

Continue reading…