手搓qtscrcpy记录

做安卓逆向,经常用到qtscrcpy,来了兴趣,准备手搓这个轮子,开搞!
qtscrcpy码云连接
作者出的课程
ok,走你

环境:qt与vs

工欲善其事必先利其器,造轮子到后面qt和vs版本问题就不可避免。
我一开始用的是vs2022和qt6.4,引入ffmpeg的时候,打不开lib;qmake、cmake、用最新编译后的ffmpeg库都试过,都不行。只能乖乖滚去用旧vs2017+qt5.12,这下能打开lib了。
但是,debug报错找不到obj文件,一通分析,我用的kit是msvc 2017 64bit,调用一个c函数。试试msvc 32bit,没安装…而且在MaintenanceTool里没找到update…卸了重装,通过。

vs2017 + qt5 + msvc 32bit
vs2017_download
qt5_download(要科学上网)
在安装qt记得勾选msvc 2017 32 bit

tips

  1. 安装qt之后要配置环境变量
  2. 高版本不支持QRegExp,使用QRegularExpression代替
  3. SkipEmptyParts高版本从QString移到Qt
  4. QProcess的finished信号在qt5中重载,需用函数指针connect;在qt6直接使用宏就ok
  5. QDir::currentPath(); 当前工作目录
    QCoreApplication::applicationDirPath(); 程序所在目录

QT的帮助写的很详细

cmake与qmake

qmake

  • include ($$PWD/xxx/xxx.pri) #添加子工程
  • INCLUDEPATH += \
  • LIBS += \ -L"路径" -l库名 #外部库
  • QT += #内部库

cmake

  • cmake中我没有添加子模块,直接加了一个包含cpp的文件夹
  • cmake内部库 find_package(Qt6 REQUIRED COMPONENTS Network) + target_link_libraries
  • cmake外部库 link_directories(所在路径) + target_link_libraries(项目 PRIVATE 库)
  • ${CMAKE_CURRENT_SOURCE_DIR} CMakeLists.txt所在目录

报错

LINK2005,(一般)头文件重复包含

多线程

QMutex互斥锁、QMutexLocker更方便的互斥锁(当QMutexLocker创建时上锁;当被销毁时,解锁);在QMutexLocker下使用QWaitCondition,传入上锁的QMutex,调用QWaitConditino.wait时,当操作系统执行阻塞的瞬间QMutex解锁;当另一线程wake后,另一线程第一时间将mutex上锁。

第三方库

ffmpeg

使用ffmpeg中avioctx、avformatctx、avcodec、avcodecctx
avcodec_send_packet返回-11,在这卡住,分析发现目标avframe没初始化…
avcodec_receive_frame返回-11,缓冲区没存满,解决缓存区未存满的延时需过掉-11
a_r_f return-11

opengl

opengl文档
opengl:glTexImage2D加载纹理单元,文档中使用GL_RGB,但是片段着色器中的源代码out是vec4,也就是GL_RGBA,改掉就能正常显示纹理

git

使用git做一个管理
git_push
Recv failure

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值