开源项目推荐:基于Qt开发的远程桌面监控和文件传输软件Aspia

简介: 开源项目推荐:基于Qt开发的远程桌面监控和文件传输软件Aspia

官网


start [Aspia]


GitHub - dchapyshev/aspia: Remote desktop and file transfer tool.


Index of /dev  已编译的第三方依赖库


aspia/building.md at master · dchapyshev/aspia · GitHub 源码编译说明


GitHub - SoftwareNetwork/binaries: Mirror of sw binaries from https://software-network.org/client/


image.png


x86 or x86_64 CPU with SSE2


Windows 7/2008 R2 or higher, Debian/Ubuntu Linux, MacOS X


源码怎么编译?


一、先要安装vcpkg这个工具


1、官网下载最新版 Releases · microsoft/vcpkg · GitHub


2、解压,然后双击执行\vcpkg-2021.05.12\bootstrap-vcpkg.bat,稍等一会,会生成vcpkg.exe


3、cmd命令行执行vcpkg integrate install

C:\Users\firecat>cd T:\tmp-source\aspia\vcpkg-2021.05.12
C:\Users\firecat>T:
T:\tmp-source\aspia\vcpkg-2021.05.12>vcpkg integrate install
Applied user-wide integration for this vcpkg root.
All MSBuild C++ projects can now #include any installed libraries.
Linking will be handled automatically.
Installing new libraries will make them instantly available.
CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=T:/tmp-source/aspia/vcpkg-2021.05.12/scripts/buildsystems/vcpkg.cmake"
T:\tmp-source\aspia\vcpkg-2021.05.12>


更多关于vcpkg的安装知识,详情见:


vcpkg安装和使用--学习入门_你好,Albert的博客-CSDN博客_vcpkg安装


4、VS2019需要安装英文语言包


因为vcpkg的源码写的比较死板(部分路径都是写死的),导致该工具无法识别中文的开发环境。


办法:VS2019菜单-工具-获取工具和功能


二、想编译Aspia v2.1以上的源码,须知:


1、cmkae版本必须在v3.20以上


2、Qt版本必须在v5.14以上,否则会出现Unknown CMake command "qt5_import_plugins"的错误


https://github.com/dchapyshev/aspia/issues/108


3、openssl在1.0.x之前的版本中,文件为libeay32.dll和ssleay32.dll,在1.1.x之后的版本中,名字是libssl.dll和libcrypto.dll


4、第三方库和依赖库都是32位的:


vcpkg install   asio:x86-windows-static

vcpkg install   gtest:x86-windows-static

vcpkg install   libvpx:x86-windows-static

vcpkg install   libyuv:x86-windows-static

vcpkg install   openssl:x86-windows-static

vcpkg install   opus:x86-windows-static

vcpkg install   protobuf:x86-windows-static

vcpkg install   rapidjson:x86-windows-static

vcpkg install   rapidxml:x86-windows-static

vcpkg install   sqlite3:x86-windows-static

vcpkg install   libwebm:x86-windows-static

vcpkg install   zstd:x86-windows-static

5、aspia_host_core必须是dll,要编译成动态库,而非静态库


6、出现Could NOT find Protobuf (missing: Protobuf_PROTOC_EXECUTABLE)这个错误提示,怎么办?请看我的另一篇博文:


Could NOT find Protobuf (missing: Protobuf_PROTOC_EXECUTABLE)_$firecat全宏的代码足迹$-CSDN博客


x、cmake的选项


image.png

image.png




源码有若干处需要调整


1、qm路径


C:\Users\Administrator\Desktop\aspia-master\source\qt_base\CMakeLists.txt


删除file(GLOB QT_QM_FILES ${Qt5_DIR}/../../qt5/translations/*.qm)

改为file(GLOB QT_QM_FILES ${Qt5_DIR}/../../../translations/*.qm)


if(Qt5LinguistTools_FOUND)

   # Get the list of Qt translation files.

   #file(GLOB QT_QM_FILES ${Qt5_DIR}/../../qt5/translations/*.qm)

   file(GLOB QT_QM_FILES ${Qt5_DIR}/../../../translations/*.qm)

   add_qt_translations(aspia_qt_base QRC_FILE "qt_translations.qrc" QM_FILES ${QT_QM_FILES})

else()

   message(WARNING "Qt5 linguist tools not found. Internationalization support will be disabled.")

endif()

2、qrc资源文件


C:\Users\Administrator\Desktop\aspia-master\source\qt_base\qt_translations.qrc

C:\Users\Administrator\Desktop\aspia-master\x86\source\qt_base\qt_translations.qrc


删除<file>qtbase_tr.qm</file>


3、编译出错,如下,怎么办?


image.png


打开VS配置对话框,导入库里面,把*.dll文件去掉


x、编译时,以下库需要重点关注,VS配置导入库时,需要指向它们


D:\vcpkg\packages\libwebm_x86-windows-static\debug\lib\libwebmd.lib


D:\vcpkg\packages\libwebm_x86-windows-static\lib\libwebm.lib


编译遗留问题


Debug和Release都能顺利编译通过。但是Debug的生成的exe运行会报错。


凡是源码有LOG(...)的语句,debug都过不了。

 


相关文章
|
1月前
|
网络协议 C++
C++ Qt开发:QTcpSocket网络通信组件
`QTcpSocket`和`QTcpServer`是Qt中用于实现基于TCP(Transmission Control Protocol)通信的两个关键类。TCP是一种面向连接的协议,它提供可靠的、双向的、面向字节流的通信。这两个类允许Qt应用程序在网络上建立客户端和服务器之间的连接。Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用`QTcpSocket`组件实现基于TCP的网络通信功能。
38 8
C++ Qt开发:QTcpSocket网络通信组件
|
3月前
|
SQL 数据库 C++
C++ Qt开发:Charts与数据库组件联动
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍`Charts`组件与`QSql`数据库组件的常用方法及灵活运用。在之前的文章中详细介绍了关于`QCharts`绘图组件的使用方式,本章将继续延续这个知识点,通过使用`QSql`数据库模块动态的读取某一个时间节点上的数据,当用户点击查询数据时则动态的输出该事件节点的所有数据,并将数据绘制到图形组件内,实现动态查询图形的功能。
34 0
C++ Qt开发:Charts与数据库组件联动
|
4月前
|
存储 C++ 索引
C++ Qt开发:TableView与TreeView组件联动
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍`TableView`与`TreeView`组件联动的常用方法及灵活运用。 本章我们继续实现表格的联动效果,当读者点击`TableView`或`TreeView`中的某一行时,我们让其实现自动跟随功能,且当用户修改行中特定数据时也让其动态的跟随改变,首先绘制一个主界面如图,分别放置两个组件框,底部保留两个按钮,按钮1用于该表表格的行列个数,按钮2则用于设置`TableView`表格表头参数,整个表格我们将其设
35 0
C++ Qt开发:TableView与TreeView组件联动
|
15天前
|
图形学 Python 容器
【PyQt5桌面应用开发】3.Qt Designer快速入门(控件详解)
【PyQt5桌面应用开发】3.Qt Designer快速入门(控件详解)
35 0
|
23天前
qt开发使用camera类获取摄像头信息并拍照保存
qt开发使用camera类获取摄像头信息并拍照保存
|
1月前
|
监控 C++
C++ Qt开发:QProcess进程管理模块
Qt是一个跨平台的C++图形库,简化了窗体应用开发,支持通过拖放组件提升效率。本章节关注`QProcess`组件,它用于控制和管理进程,例如执行命令、运行可执行文件及与外部进程通信。`QProcess`提供多种方法如`start`、`waitForStarted`和`waitForFinished`等,实现启动、监控和交互。示例展示了如何使用`QProcess`获取系统进程和信息,通过`tasklist`和`systeminfo`命令,并将结果展示在`QTreeWidget`中。
28 0
C++ Qt开发:QProcess进程管理模块
|
1月前
|
存储 C++ 网络架构
C++ Qt开发:QUdpSocket实现组播通信
Qt教程:使用`QUdpSocket`实现UDP组播通信。通过设置套接字选项、绑定端口、加入和离开组播组,以及发送和接收数据报,简化跨平台窗体应用开发。关键函数包括`setSocketOption`设置多播TTL,`bind`绑定地址和端口,`joinMulticastGroup`加入组播,`leaveMulticastGroup`退出,`writeDatagram`发送,和`readDatagram`接收数据报。
20 1
C++ Qt开发:QUdpSocket实现组播通信
|
1月前
|
存储 网络安全 C++
C++ Qt开发:QUdpSocket网络通信组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用`QUdpSocket`组件实现基于UDP的网络通信功能。与`QTcpSocket`组件功能类似,`QUdpSocket`组件是 Qt 中用于实现用户数据报协议(UDP,User Datagram Protocol)通信的类。UDP 是一种无连接的、不可靠的数据传输协议,它不保证数据包的顺序和可靠性,但具有低延迟和简单的特点。
20 0
C++ Qt开发:QUdpSocket网络通信组件
|
1月前
|
数据可视化 数据库 C++
Qt 5.14.2揭秘高效开发:如何用VS2022快速部署Qt 5.14.2,打造无与伦比的Windows应用
Qt 5.14.2揭秘高效开发:如何用VS2022快速部署Qt 5.14.2,打造无与伦比的Windows应用
|
1月前
|
缓存 网络安全 调度
C++ Qt开发:QNetworkAccessManager网络接口组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用`QNetworkAccessManager`组件实现Web网页访问。QNetworkAccessManager是Qt网络模块中的关键类,用于管理网络访问和请求。作为一个网络请求的调度中心,它为Qt应用程序提供了发送和接收各种类型的网络请求的能力,包括常见的GET、POST、PUT、DELETE等。这个模块的核心功能在于通过处理`QNetworkReply`和`QNetworkRequest`来实现
22 0
C++ Qt开发:QNetworkAccessManager网络接口组件

热门文章

最新文章

推荐镜像

更多