rust引入含有openssl相关包报错(openssl未找到和编译运行报错等相关问题)解决方案
1. 问题描述
某天在我的rust程序里引入了actix-proxy = "0.2"这个包,我的程序编译通不过了,rust-analyser也罢工了,错误也提示不出来了,查看错误提示是openssl编译的问题,于是就经过漫长的折腾,终于找到了解决办法
2. 解决办法
2.1 安装vcpkg
参考 https://blog.csdn.net/sexyluna/article/details/115285405 和
https://learn.microsoft.com/zh-cn/vcpkg/get_started/get-started?pivots=shell-powershell
我是在C:\Program Files 目录下运行的git clone,可以参考
安装完后将cvpkg的目录添加到path的环境变量中

关闭命令行窗口
然后打开一个新的cmd或powershell运行,vcpkg version
能正确显示版本就成功了

2.2 用vcpkg安装openssl
参考 https://blog.csdn.net/ywch520/article/details/135565864
运行vcpkg install openssl:x64-windows
等待安装完成
然后添加环境变量
X86_64_PC_WINDOWS_MSVC_OPENSSL_LIB_DIR = 安装目录\vcpkg\packages\openssl_x64-windows\lib
X86_64_PC_WINDOWS_MSVC_OPENSSL_INCLUDE_DIR = 安装目录\vcpkg\packages\openssl_x64-windows\include
X86_64_PC_WINDOWS_MSVC_OPENSSL_DIR = 安装目录\vcpkg\packages\openssl_x64-windows
我的提供参考

2.3 安装perl
参考 https://www.runoob.com/perl/perl-environment.html
per有两个版本,推荐strawberry的msi版本,自动设置环境变量

!!!一定要安装,不然运行时还会报错!
2.4 在tmol中添加如下依赖
openssl = { version = "0.10", features = ["vendored"] }
之前没添加这个,编译没问题,但程序运行不起来。。。
现在,cargo run 吧!!! XD

以上是静态链接的办法,动态链接参考第5节
参考 https://www.cnblogs.com/chy-lionni/p/18420088 ,大佬的文章很有用!!!
2.5 使用别人编译好的版本
未验证,这里的内容是我之前摸索的过程,结合大佬的文章修改了设置错误的环境变量
参考 https://www.cnblogs.com/chy-lionni/p/18420088
2.5.1 下载openssl编译后的包
https://slproweb.com/products/Win32OpenSSL.html
选择完全包

2.5.2 安装
注意下面这一步把dll安装到/bin所在的同级目录

一路回车,最后的捐款可以不选
2.5.3. 设置环境变量
经过实验,主要的环境变量有3个
OPENSSL_DIR = "C:\Program Files\OpenSSL-Win64"
OPENSSL_INCLUDE_DIR = "C:\Program Files\OpenSSL-Win64\include"
OPENSSL_LIB_DIR = "C:\Program Files\OpenSSL-Win64\lib\VC\x64\MTd"
这里的环境变量设置参考的 https://www.cnblogs.com/chy-lionni/p/18420088
他们之间的区别参考这篇文章里的介绍 https://blog.csdn.net/m0_61882573/article/details/139030184,
根据上面的文章显示,似乎切换 OPENSSL_LIB_DIR 的环境变量文件夹可以转换静态或动态链接,但本人未实验!
2.5.4 刷新系统环境变量
以管理员身份执行以下cmd指令
set PATH=C:
关闭cmd窗口,你的环境变量就生效了,不用重启电脑
然后关闭vs code,重新打开项目,rust-analyzer就不再报错,语法分析也恢复正常了!!!
3. 参考文献
https://blog.csdn.net/m0_61882573/article/details/139030184
https://github.com/sfackler/rust-openssl/issues/1793
https://www.taurusxin.com/openssl_win_build/
https://blog.csdn.net/sexyluna/article/details/115285405
https://www.cnblogs.com/chy-lionni/p/18420088
rust引入含有openssl相关包报错(openssl未找到和编译运行报错等相关问题)解决方案的更多相关文章
- VS编译运行报错:找不到ucrtbased.dll文件
VS编译运行报错:找不到ucrtbased.dll文件 在VS2019中配置OpenCV编译,报如下错误: 解决方法:下载缺少的ucrtbased.dll文件,在免费的dll下载网站搜索下载,对应的有 ...
- Archlinux/Manjaro使用笔记-使用makepkg安装软件 报错:未找到strip分割所需的二进制文件 的解决方法
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 使用archlinux或manjaro安装aurman时遇到如下报错 错误:未找到strip分割所需的二进制文件 原因:未安装g ...
- 菜鸟调错(八)—— Maven编译错误:不兼容的类型的解决方案
泛型在实际的工作中应用非常广泛,关于泛型就不在这里赘述了,感兴趣请戳<重新认识泛型>.项目中用到了如下的泛型: public <T> T query(String sql, R ...
- AutoHotKey 使用ADODB读取Excel 报ADODB.Connection 未找到提供程序,可能未提供
一.系统环境 操作系统:Win7 64位 英文版 Office: Office 2010 64位/32位 AutoHotKey:AutoHotKey 1.1.26.01 二.问题现象 安装了A ...
- 【Silverlight】打开Silverlight程序报错,"未找到导入的项目......请确认<Import>声明中的路径正确,且磁盘上存在该文件"
在打开Silverlight程序时,报错(如图所示),程序使用的是Visual Studio 2013和最新的Silverlight版本(Silverlight5). 然后我在网上找了下说:Silve ...
- xcode编译运行报错纪录(持续更新)
---恢复内容开始--- 1. Undefined symbols for architecture i386: "_deflate", referenced from: -[NS ...
- 创建一个MVC解决方案,添加一个控制器后,运行程序报错:”/"未找到服务器
1.创建一个MVC项目,如图
- vs2012 编译运行报 项目程序包Dsp.Bds.dll还原失败,找不到版本xxxxxx的程序包问题的解决方法
原先vs2012程序运行项目是可以了,不会出现程序包Dsp.Bds.dll还原失败,找不到版本未2.0.1.0的程序包问题, 但是项目可以正常运行,每次调试看到下面一片红感觉不舒服 原因:可能当时我看 ...
- Xcode 编译运行报错: CpResource /user/xxxx/ xxx Directory not empty
之前遇到过相同的问题,总是记吃不记打,踩过的坑后面还会踩进去... 仅以次标记加深一下印象 错误特征RT 确认该类型错误是library或frameWork的search路径问题 首先找到编译错误的路 ...
- mybatis报错:未找到参数导致绑定异常
问题: 在映射文件中使用parameterMap元素时出现以下异常: org.mybatis.spring.MyBatisSystemException: nested exception is or ...
随机推荐
- 用户信息授权报错“无效的AppID参数”问题排查解决过程
今天记一个支付宝报错"无效的AppID参数"的问题排查解决过程,希望可以帮到大家. 报错产生 今天在测试支付宝用户信息授权 换取授权访问令牌 的时候,遇到了一个报错:"无 ...
- 探秘Transformer系列之(4)--- 编码器 & 解码器
探秘Transformer系列之(4)--- 编码器 & 解码器 0x00 摘要 对于机器翻译,Transformer完整的前向计算过程如下图所示(与总体架构那章的流程图相比较,此处重点突出了 ...
- [BZOJ4605] 崂山白花蛇草水 题解
突然想买一瓶,然后喝上几口.(不要命的想法) 动态全局 \(k\) 大想到权值线段树上二分. 由于要存储二维的点,所以得用到我们神通广大的 \(KDT\) 了. 那么想到权值线段树套 \(KDT\) ...
- 基于GD32的简易示波器
基于GD32的简易示波器项目学习 根据立创训练营项目:[简易数字示波器设计(入门版) - 立创开源硬件平台(https://oshwhub.com/course-examples/yi-qi-yi-b ...
- Linux - centos6.6不使用ssh如何在服务器之间传输文件?
根据上一篇的设定,如果升级openssh失败之后,又无法使用ssh,该怎么传输文件呢? 可以使用busybox进行文件传输,首先需要准备两台centos6.6服务器:ctos66-01和ctos66- ...
- .NET10 - 预览版1新功能体验(一)
.NET 10 首个预览版已经在前两天发布,该版本在 .NET Runtime.SDK.libraries.C#.ASP.NET Core.Blazor 和 .NET MAUI 等多个方面都有重大改进 ...
- 【ABAQUS 二次开发笔记】Python 报错收集和解决方法
1. 运行报错,找不到本地文件及模块.自定义模块 1.1 Example: $/home/tops/bin/python xxx.py Traceback (most recent call last ...
- Hanoi-C
什么是汉诺塔?汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命 ...
- SpringSecurity学习笔记-前后端分离
1. 简介 Spring Security是Spring家族中的一个安全管理框架.相比于另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富. 一般来说中大型的项目都是使用Sp ...
- 项目管理协作工具对比:PingCode vs Leangoo
多语言适配能力 在全球化协作场景下,多语言支持成为跨国团队的硬性指标.PingCode目前仅支持中文界面,对于涉及多国语言协作的团队存在使用局限.对比Leangoo提供中英文双语界面切换功能,可满足基 ...