当前位置:首页 » 编程软件 » vs2017编译文件无效或损毁

vs2017编译文件无效或损毁

发布时间: 2024-11-26 15:04:16

㈠ 记一次硬核的VS2017安装历程

由于工作需要,我必须使用虚幻4引擎,并且被要求使用VS2017作为IDE和C++编译器。众所周知,VS的安装要么顺利,要么困难重重。尽管周围同事都安装得很顺利,我却一直未能成功,经过一番艰苦的排查,我终于解决了这个问题。尽管每个人遇到的问题可能不同,但排查的思路可以借鉴,因此我编写了这篇文章。

首先遇到了一个现象:在win7 x64系统上安装VS2017时,安装程序在提示“即将完成...一切准备就绪”后,程序会突然闪退,没有任何提示。而安装低版本的VS(如15.0、15.3)可以正常运行,安装高版本的(如15.9)就会闪退。

为了解决这个问题,我尝试了多种方法。首先,我向搜索引擎求助,发现这个现象已有不少网友遇到,他们提供了多种方法,包括但不限于:将安装程序设置为win7兼容性、兼容性设置禁用视觉主题和桌面元素、跳过引导程序直接运行Installer.exe、安装windows更新kb4474419和kb4490628、用微软提供的卸载工具VisualStudioUninstaller删除旧版本残余、用安装器提供的Cleanup工具做清理、删除一切和VS有关的文件和注册表、建立新的windows账号,甚至尝试卸载显卡驱动。然而,这些方法对我都没有效果。

考虑到这些常规方法无效,我决定查看VS的安装日志。VS的安装程序会打印详尽的日志,查看日志往往能定位问题。VS日志位于C:\Users\[用户]\AppData\Local\Temp,如果能看到异常信息,比如字体缺失,缺少某个库文件,那安装上就可以了。不过我的日志如下,Exiting with code 0代表成功,也就是说没有错误信息。

随后,我尝试打开事件查看器查看系统日志,但也没有发现特别的错误信息。

既然常规的方法不行,我就只能逆向思考了。我查看VS安装程序的调用流程,发现是vs_installershell.exe闪退,于是我开始解剖它。

我使用Process Monitor这款进程监控软件,查看安装程序读取了哪些dll和注册表,推测是否有些dll丢失,或者读到旧版本的注册表,如果有就改一改。然而,Process Monitor打印的信息非常多,查看很花费时间,对一些疑似的问题做修改,但最终还是没能解决。

然后,我尝试使用WinDbg这款Windows下的程序调试器进行调试。发现在程序奔溃前加载了个奇怪的dll,这个dll是C:\Program Files\Thunder Network\Thunder\NetMon et_monitor2.0.2.9.dll,也就是迅雷的dll。经过一番分析,我怀疑这个dll是导致闪退的原因。

我将这个dll删除,由于该dll注入winsock,粉碎后winsock也损坏了,计算机找不到TCP/IP协议,我又把网络协议重新安装,然后恢复winsock对应的注册表,成功解决了问题。

㈡ Rust VS Python:为什么越来越流行,取代榜一 Python

2021 年,Python 又获得了 TIOBE 年度编程语言,排名已经是第一。而 Rust 依然在 20 名以外。但依然有人认为,Rust 甚至可能取代 Python。不过这不重要,认清两者的优缺点,进而合适的地方使用合适的语言,这才最重要。

在这个指南中,我们将比较 Rust 和 Python 这两门语言,同时将讨论它们各自的应用场景,回顾使用 Rust vs. Python 的优缺点,并解释 Rust 为什么越来越受欢迎(甚至可能取代 Python)。

Rust [1] 是一门系统编程语言,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言。Rust 在语法上和 C++ 类似,但是设计者想要在保证性能的同时提供更好的内存安全。Rust 最初是由 Mozilla 研究院的 Graydon Hoare 设计创造,然后在 Dave Herman, Brendan Eich 以及很多其他人的贡献下逐步完善的。Rust 的设计者们通过在研发 Servo 网站浏览器布局引擎过程中积累的经验优化了 Rust 语言和 Rust 编译器。

Rust 拥有 优秀的文档 [2] 、友好的编译器和有用的错误消息,以及顶级工具,包括集成包管理器、构建工具、支持自动完成和类型检查的智能多编辑器、自动格式化程序等等。

Rust 发布于 2010 年。虽然和 Python 相比,Rust 是一门年轻的语言,但是它的社区正在稳步增长。事实上,Rust 已经连续五年(2016,2017,2018,2019,2020)在 Stack Overflow 开发者调查的“最受喜爱编程语言”评选项目中摘取桂冠。

乍一看,Rust 的静态化和强类型化可能看起来有点极端。但从长远来看,这有助于防止意外的代码行为。

Python [3] 是一门旨在帮助开发人员更有效地工作和更有效地集成系统的编程语言。Python 提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。如果速度是最重要的,可以使用较低级别的 API 调用,如 CPython [4] 。

1991 年 Guido van Rossum 推出了 Python,以其代码的可读性、无分号和花括号而着称。

除了可扩展性之外,Python 还是一门解释型语言,这使得它比大多数编译型语言要慢。正如您可能期望的那样,Python 拥有一个庞大的库生态系统和一个庞大的专业社区。

Rust 被应用于系统开发、操作系统、企业系统、微控制器应用、嵌入式系统、文件系统、浏览器组件、虚拟现实的仿真引擎等。

当性能很重要的时候,Rust 是一种常用的语言,因为它能很好地处理大量数据。它可以处理 CPU 密集型的操作,如执行算法,这就是为什么 Rust 比 Python 更适合系统开发的原因。

Rust 保证了内存的安全性,让你可以控制线程行为和线程之间的资源分配方式。这使你能够构建复杂的系统,也使得 Rust 比 Python 更有优势。

总而言之,你应在以下情况下使用 Rust:

Python 可以用于许多应用领域,从 Web 开发,到数据科学和分析,到 AI 和机器学习,再到软件开发。

Python 被广泛用于机器学习,数据科学和 AI,因为它:

在以下情况下,你应该使用 Python:

考虑到 Rust 的迅速普及、受欢迎程度和广泛的使用案例,它几乎不可避免地会在不久的将来超越 Python,以下是一些原因。

Rust 超越 Python 的一个主要原因是性能。因为 Rust 是直接编译成机器代码的,所以在你的代码和计算机之间没有虚拟机或解释器。

与 Python 相比,另一个关键优势是 Rust 的线程和内存管理。虽然 Rust 不像 Python 那样有垃圾回收机制,但 Rust 中的编译器会强制检查无效的内存引用泄漏和其他危险或不规则行为。

编译语言通常比解释语言要快。但是,使 Rust 处于不同水平的是,它几乎与 C 和 C ++一样快,而且没有额外开销。

让我们看一个用 Python 编写的 O(log n) 程序的示例,并使用迭代方法计算完成任务所需的时间:

输出:

现在,让我们来看一下使用迭代方法用 Rust 编写的定时 O(log n) 程序:

输出

在没有使用任何优化技术的情况下,Rust 和 Python 在同一台机器上执行类似的操作分别需要 4.6 微秒和 8.6 微秒。这意味着 Python 花费的时间几乎是 Rust 的两倍。

Python 和大多数现代编程语言一样,被设计成内存安全的。然而,即使没有垃圾回收。Rust 在内存安全方面却让 Python 望尘莫及。

Rust 采用了一种独特的方式来确保内存安全,其中涉及所有权系统和借用检查器(borrow checker)。Rust 的借用检查器确保引用和指针不会超过它们所指向的数据。

Python 和其他语言一样,提供了错误检查和日志机制。但是在让开发者知道哪里出了什么问题的时候,Rust 和 Python 之间有一些差异。

举一个 Python 变量错误的典型例子:

Python 输出

Rust 中的类似示例:

Rust 输出

在这里,Rust 推荐了可能的变量,这些变量可能是你想输入的。Python 只会抛出错误,而不会给出如何修复的建议。

再举个例子:

此代码引发错误,因为默认情况下 Rust 中的变量是不可变的。除非它具有关键字 mut ,否则无法更改。

错误:

修正错误:

如你所见,现在它不会引发任何错误。除此之外,Rust 不允许不同的数据类型相互操作,除非将它们转换为相同的类型。

因此,维护 Rust 代码库通常很容易。除非指定,否则 Rust 不允许更改。Python 是允许这种性质的更改的。

与大多数编译语言相比,Rust 因其速度快、内存安全有保证、超强的可靠性、一致性和用户友好性而备受青睐。在编程中,我们已经到了速度开始变得毫不费力的地步。

随着技术的发展,它变得越来越快,试图在更短的时间内做更多的事情,而不需要那么多的权衡。Rust 帮助实现了这一点,同时又不妨碍开发者的工作。当技术试图推动可以实现的边界时,它也会考虑系统的安全性和可靠性,这是 Rust 背后的主要思想。

除了速度外,Python 在并行计算方面也有局限性。

Python 使用全局解释器锁(GIL),它鼓励只有一个线程同时执行,以提高单线程的性能。这是一大局限,因为它意味着你不能使用多个 CPU 核进行密集计算。

如前所述,Stack Overflow 的“ 2020 开发人员调查”中有 86%的受访者将 Rust 称为 2020 年最喜欢的编程语言。

同样,“ 2020 HackerRank 开发人员技能报告”的受访者将 Rust 列为他们计划下一步学习的十大编程语言:

相比之下,2019 年的调查将 Rust 排在列表的底部,这表明 Rust 开发人员社区正在迅速增长。

这些数据表明,Rust 正在成为主流开发者社区的一部分。许多大公司都在使用 Rust,一些开发者甚至用它来构建其他编程语言使用的库。着名的 Rust 用户包括 Mozilla、Dropbox、Atlassian、npm 和 Cloudflare 等等。

Amazon Web Service 还对 Lambda,EC2 和 S3 中的性能敏感组件采用了 Rust。在 2019 年,AWS 宣布赞助 Rust 项目,此后为 Rust 提供了 AWS 开发工具包。

公司正越来越多地用更高效的编程语言(如 Rust)取代速度较慢的编程语言。没有其他语言能像 Rust 一样在简单和速度之间做出平衡。

Rust 已经发展成为一门易于使用的编程语言,因此它的使用率有所提高。尽管 Python 在机器学习/数据科学社区中占有坚实的地位,但 Rust 在未来很可能被用作 Python 库更有效的后端。

Rust 具有取代 Python 的巨大潜力。目前的趋势是,在应用程序、性能和速度方面,Rust 不仅仅是一种编程语言,它还是一种思维方式。

各位看官你们觉得呢?评论区留下你的看法!

热点内容
unix与linux的关系 发布:2024-11-26 17:38:37 浏览:463
中恒牌密码锁初始管理密码是多少 发布:2024-11-26 17:34:54 浏览:295
ios手机怎么玩安卓游戏 发布:2024-11-26 17:08:23 浏览:395
sql记录执行 发布:2024-11-26 17:08:15 浏览:8
deb反编译 发布:2024-11-26 17:04:12 浏览:140
ftp站点如何设置 发布:2024-11-26 16:54:48 浏览:849
预设存储器 发布:2024-11-26 16:47:38 浏览:14
如何打开云服务器的窗口 发布:2024-11-26 16:42:37 浏览:844
怎么自学编程入门 发布:2024-11-26 16:40:58 浏览:760
梦幻西游网页版脚本辅助神器 发布:2024-11-26 16:39:18 浏览:67