自己开发网站要多少钱,网站建设公司投融资分析,网站建设综合训练报告,小微平台目录 一、前言
二、环境准备
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
三、编译
四、总结和学习 一、前言
Telegram 是一款全球广泛使用的即时通讯软件#xff0c;以其强大的隐私保护、跨平台同步和丰富的功能而闻名。它支持一对一聊天、群组#xff08;最多20万成员以其强大的隐私保护、跨平台同步和丰富的功能而闻名。它支持一对一聊天、群组最多20万成员和频道无限订阅者并提供端到端加密确保用户消息的安全性。Telegram 还具备语音通话、视频通话、文件共享单文件最大2GB和自定义贴纸等功能。此外它通过机器人和频道为用户提供自动化服务和内容订阅广泛应用于个人沟通、品牌推广和社区建设。凭借其简洁的界面和强大的功能Telegram 已成为全球超过10亿用户的首选即时通讯工具之一。
相信大家都知道Telegram国内用的大多数都是微信国外很多用户都是用的是Telegram而且Telegram的客户端代码是开源的包括iOS、Android、macOS 和桌面版。今天我着篇文章就是介绍一下怎么编译桌面版的之前我一直都只是把克隆了一下桌面版的代码想着跑起来很简单这几天详细去了解后发现还挺麻烦的就想着写成文章记录一下。
二、环境准备
2.1
需要用到Visual Studio我使用的是vs2022的版本SDK版本是10.0.22000.0最好不要用太老的版本 2.2
在同一个目录下创建两个文件夹名称是Libraries和ThirdParty然后分别去下载Pythongitcmake这三个工具将这三个工具放在ThirdParty文件夹里。 去区域设置里勾上UTF-8编码 下载地址 Python3.10https://www.python.org/downloads/ Githttps://git-scm.com/download/win cmake2.21及以后版本https://cmake.org/download/
注意关于git和cmake的版本不要下载最新的不然后续自动下载所需的工具和第三方库的时候会有很多很多的报错我踩了很多很多坑。
我当时使用git最新版本在下面2.5步的时候运行win.bat卡在Receiving objects查资料发现这个问题必须将git版本降低后才解决的把原来那个卸载了之后我又下载了一个新的的git版本 https://github.com/git-for-windows/git/releases/tag/v2.45.2.windows.1
$ git --version
git version 2.45.2.windows.1
cmake我开始下载的cmake-4.0.0-rc3-windows-x86_64版本后面也是在2.5步的时候运行win.bat出错弹出一个warning查资料发现是telegram项目对CMake有最低版本需求和策略我查了一下CMakeList.txt代码然后直接给原来的cmake给卸载了最后下载了一个3.31.6稳定的版本。
$ cmake --version
cmake version 3.31.6 2.3
勾选上区域设置里勾上UTF-8编码直接搜语言设置就可以找到。 2.4
使用git获取Telegram Desktop在Libraries和ThirdParty同级目录下直接克隆。 git clone --recursive https://github.com/telegramdesktop/tdesktop.git
2.5
在电脑找vs的X86编辑器我编译的是32位的telegram更稳定一些。 打开之后使用cd /d xxx\tdesktop\Telegram\build\prepare进入到win.bat目录吗然后输入win.bat即可。 显示这样就是过程中一共有31个依赖软件和第三方库最后跑完就如下所示 2.6
这一步主要讲一下2.5的一些出错等问题。
1.关于git和cmake的版本不要下载最新的具体下载哪个版本参考我上面就讲的2.2 。
2.我在9/31的时候遇到error: RPC failed curl 56 Recv failure:.....的问题是因为这个依赖软件内存比较大打开git修改一下git的http.postBuffer的值就可以了我当时改成0.5G1G2G都不行最后一气之下改成10G就可以了。
git config --global http.postBuffer 10485760000
3.最后整个编译完大概是36个G要确保内存够用。
4.关于2.3步勾上UTF-8编码等后续跑成功之后就可以关了要不然你这个电脑很多中文都直接乱码或者消失尤其是游戏里。
5.有的一直卡在x/31一直下载不了那就自己手动下载简单粗暴。
6.在2.5的整个过程可能一直不断有warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。 请将该文件保存为 Unicode 格式以防止数据丢失这种错误不影响不用管就行。
5.整个2.5大概需要跑半天的时间不要着急卡在某个地方就点点键盘的enter键检查检查VPN网速我在这一步遇到了很多很多问题上面只是随便列了几个可能不全遇到问题就去看报错和warning或者日志查资料解决和平时解bug一个思路一般都是弹出warning然后显示FAILED然后结束查资料解决完bug继续输入win.bat即可这个时候会出现r重构a全部重构s跳过p打印q退出这几种选项点R键就可以。
2.7
2.5的31个所需的工具和第三方库下载完之后还是使用vs的X86编辑器进入到xxx\tdesktop\Telegram目录然后输入以下命令即可命令中的api_id和api_hash是官方提供的示例自己有的话可以替换成自己的。
configure.bat -D TDESKTOP_API_ID17349 -D TDESKTOP_API_HASH344583e45741c457fe1862106095a5eb
2.8
构建成功的话会在out文件夹里出现sln文件点击就能进入vs22里开始编译了。 三、编译
点击上图Telegram.sin即可然后生成本解决方案运行就可以了编译成功就如下图。 我当时编译完后遇到两处fatal error C1001: 内部编译器错误都是if语句这个bug之前遇到过都是语法错误然后检查检查代码发现没有任何问题看了很多解决方案都是修改“全程序优化项”我改了之后发现没有生效查资料知道修改“全程序优化项”只对64位的生效32位的不行最后看到一篇文章说将原来工程编译生成的目录全删掉再编译居然过了。
当然对于这个问题还有一个简单粗暴的解决方式就是直接把这两个if语句给注释掉我不建议这样搞对于每一个bug要是只解决表面深处留下更大的隐患以后肯定会出现更严重的bug。
四、总结和学习
在成功编译 Telegram Desktop 后怎么深入学习其源码是很多人头疼的问题下面我简单分享一下学习的步骤。
4.1 可以先从项目的目录结构入手了解不同模块的功能划分例如 Lib文件夹下的标准库和 Telegram 文件夹下的核心功能实现、慢慢梳理程序的启动流程理解其初始化逻辑和核心组件的加载方式。
4.2 对于初学者来说可以从简单的功能模块开始比如用户界面的实现或消息发送与接收的流程。Telegram Desktop 使用了高效的多线程和异步处理机制研究这些机制如何实现高性能的消息处理和网络通信将有助于提升对并发编程的理解。同时关注其端到端加密的实现细节学习如何在实际应用中保障用户隐私和数据安全。
4.3 Telegram Desktop 的代码中广泛使用了设计模式如单例模式、观察者模式等研究这些模式的运用场景和实现方式可以加深对面向对象编程的理解。
4.4 还可以通过调试工具逐步跟踪代码执行过程观察变量变化和函数调用栈从而更直观地理解代码逻辑这样可以好好学习Visual Studio自带的各种调试代码强大的功能。
总之Telegram Desktop 的源码是一个丰富的学习资源通过系统地研究和实践可以逐步掌握大型C 项目的开发技巧和最佳实践。
最后如果觉得我的文章对你有帮助请点赞收藏加关注谢谢大家。