Telegram 桌面端 Visual Studio 2019 编译 tdesktop 指南

2024-06-23 09:32

本文主要是介绍Telegram 桌面端 Visual Studio 2019 编译 tdesktop 指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

编译该项目起初耗时 1 天半(1 个通宵 + 2 个白天),结果还失败了。

然后时隔 3 个月,又尝试重新编译,耗时 1 个白天,编译成功。

坑还是有(fei)点(chang)多的。

不多说了,进入正题。

 

1、准备环境

由于此开源项目较大,编译容易出错,一些第三方软件可能与您已安装的版本相冲突。

所以强烈建议在虚拟机中编译该项目,并保存多个时间点快照。

环境要求:16G 或以上的内存 + VMware + Windows 10 x64 + 网络代理

 

16G 以下的,就不建议在本机编译了,建议找个在线编译平台操作。

我虚拟机拉到 8G 都还是会编译失败,最后是拉到 12G 才勉强编译成功的。

 

先安装好虚拟机,在虚拟机内下载安装 VS 2019 和 Git bash。

 

2、准备编译

前往 tdesktop 的 GitHub 仓库页面。

在 README 中找到 Visual Studio 2019 的编译说明。

本指南按照 May 12, 2020 提交的 building-msvc.md 作为讲述。

实际操作请按照最新提交的 building-msvc.md 执行。

 

Prepare folder

Choose an empty folder for the future build, for example D:\TBuild. It will be named BuildPath in the rest of this document. Create two folders there, BuildPath\ThirdParty and BuildPath\Libraries.

All commands (if not stated otherwise) will be launched from x86 Native Tools Command Prompt for VS 2019.bat (should be in Start Menu > Visual Studio 2019 menu folder). Pay attention not to use any other Command Prompt.

首先按照教程开头说明,准备一个编译文件夹,这里就用文中默认的路径 D:\TBuild,后续称之为 BuildPath。

之后的所有命令(除非另有说明)都将在 x86 Native Tools Command Prompt for VS 2019(x86 本机工具命令提示符) 中执行(位于 开始菜单 -> Visual Studio 2019 文件夹中)。

 

Obtain your API credentials

You will require api_id and api_hash to access the Telegram API servers. To learn how to obtain them click here.

api_id: 17349 api_hash: 344583e45741c457fe1862106095a5eb

用于测试的 API 授权信息,非官方编译的第三方 Telegram 版本都需要 API_ID 和 API_HASH 来与 Telegram 官方服务器进行交互。API 可以向 Telegram 官方申请,二次开发的 Telegram 客户端需要遵守 Telegram 的相关规定,否则 API 可能会被封禁。

 

Install third party software

  • Download Strawberry Perl installer from http://strawberryperl.com/ and install to BuildPath\ThirdParty\S

这篇关于Telegram 桌面端 Visual Studio 2019 编译 tdesktop 指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1086779

相关文章

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

如何掌握面向对象编程的四大特性、Lambda 表达式及 I/O 流:全面指南

这里写目录标题 OOP语言的四大特性lambda输入/输出流(I/O流) OOP语言的四大特性 面向对象编程(OOP)是一种编程范式,它通过使用“对象”来组织代码。OOP 的四大特性是封装、继承、多态和抽象。这些特性帮助程序员更好地管理复杂的代码,使程序更易于理解和维护。 类-》实体的抽象类型 实体(属性,行为) -》 ADT(abstract data type) 属性-》成

Windows环境利用VS2022编译 libvpx 源码教程

libvpx libvpx 是一个开源的视频编码库,由 WebM 项目开发和维护,专门用于 VP8 和 VP9 视频编码格式的编解码处理。它支持高质量的视频压缩,广泛应用于视频会议、在线教育、视频直播服务等多种场景中。libvpx 的特点包括跨平台兼容性、硬件加速支持以及灵活的接口设计,使其可以轻松集成到各种应用程序中。 libvpx 的安装和配置过程相对简单,用户可以从官方网站下载源代码

Golang test编译使用

创建文件my_test.go package testsimport "testing"func TestMy(t *testing.T) {t.Log("TestMy")} 通常用法: $ go test -v -run TestMy my_test.go=== RUN TestMyTestMy: my_test.go:6: TestMy--- PASS: TestMy (0.