当前位置:   article > 正文

手搓qtscrcpy记录_qtscprcy

qtscprcy

做安卓逆向,经常用到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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/188103
推荐阅读
相关标签
  

闽ICP备14008679号