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未找到和编译运行报错等相关问题)解决方案的更多相关文章

  1. VS编译运行报错:找不到ucrtbased.dll文件

    VS编译运行报错:找不到ucrtbased.dll文件 在VS2019中配置OpenCV编译,报如下错误: 解决方法:下载缺少的ucrtbased.dll文件,在免费的dll下载网站搜索下载,对应的有 ...

  2. Archlinux/Manjaro使用笔记-使用makepkg安装软件 报错:未找到strip分割所需的二进制文件 的解决方法

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 使用archlinux或manjaro安装aurman时遇到如下报错 错误:未找到strip分割所需的二进制文件 原因:未安装g ...

  3. 菜鸟调错(八)—— Maven编译错误:不兼容的类型的解决方案

    泛型在实际的工作中应用非常广泛,关于泛型就不在这里赘述了,感兴趣请戳<重新认识泛型>.项目中用到了如下的泛型: public <T> T query(String sql, R ...

  4. AutoHotKey 使用ADODB读取Excel 报ADODB.Connection 未找到提供程序,可能未提供

    一.系统环境 操作系统:Win7 64位 英文版 Office:     Office 2010 64位/32位 AutoHotKey:AutoHotKey 1.1.26.01 二.问题现象 安装了A ...

  5. 【Silverlight】打开Silverlight程序报错,"未找到导入的项目......请确认<Import>声明中的路径正确,且磁盘上存在该文件"

    在打开Silverlight程序时,报错(如图所示),程序使用的是Visual Studio 2013和最新的Silverlight版本(Silverlight5). 然后我在网上找了下说:Silve ...

  6. xcode编译运行报错纪录(持续更新)

    ---恢复内容开始--- 1. Undefined symbols for architecture i386: "_deflate", referenced from: -[NS ...

  7. 创建一个MVC解决方案,添加一个控制器后,运行程序报错:”/"未找到服务器

    1.创建一个MVC项目,如图

  8. vs2012 编译运行报 项目程序包Dsp.Bds.dll还原失败,找不到版本xxxxxx的程序包问题的解决方法

    原先vs2012程序运行项目是可以了,不会出现程序包Dsp.Bds.dll还原失败,找不到版本未2.0.1.0的程序包问题, 但是项目可以正常运行,每次调试看到下面一片红感觉不舒服 原因:可能当时我看 ...

  9. Xcode 编译运行报错: CpResource /user/xxxx/ xxx Directory not empty

    之前遇到过相同的问题,总是记吃不记打,踩过的坑后面还会踩进去... 仅以次标记加深一下印象 错误特征RT 确认该类型错误是library或frameWork的search路径问题 首先找到编译错误的路 ...

  10. mybatis报错:未找到参数导致绑定异常

    问题: 在映射文件中使用parameterMap元素时出现以下异常: org.mybatis.spring.MyBatisSystemException: nested exception is or ...

随机推荐

  1. 特征转换之python代码

    一.连续型变量1.1 连续变量无量纲化(1)无量纲化: 使不同规格尺度的数据转化统一规格尺度(将数据单位统一)(2)无量纲化方法:标准化, 区间所方法 标准化: 将连续性变量转变为 均值0 标准差1 ...

  2. QT5笔记: 20. QStringListModel的使用

    主要为 :添加.插入.修改.删除.清空等操作 例子:本例子中QListView 没有做任何处理,只是拖放至ui文件,设置了布局 MainWindow.h #ifndef MAINWINDOW_H #d ...

  3. 4个Sprint目标的挑战以及解决的技巧

    1. Sprint 目标太大 有时,您的团队可能会尝试将过多的任务塞进冲刺中.抵制在冲刺中承担太多的诱惑,因为这会损害你的速度和持续交付的能力. 2. Sprint目标是模糊的 冲刺目标通常是不确定的 ...

  4. Flink学习(一) 行情介绍

    想进大厂,必须掌握 Flink 技术!!! 随着大数据时代的发展.海量数据的实时处理和多样业务的数据计算需求激增,传统的批处理方式和早期的流式处理框架也有自身的局限性,难以在延迟性.吞吐量.容错能力, ...

  5. 数据挖掘 | 数据隐私(4) | 差分隐私 | 差分隐私概论(下)(Intro to Differential Privacy 2)

    L4-Intro to Differential Privacy 拉普拉斯机制(Laplace Mechanism) 上一节课中,我们讨论了随机响应,这是一种适合于单个位的隐私化.这种算法一般来说并不 ...

  6. layui 点击链接复制内容到剪切板

    var tableObj = table.render({ id: 'list_table', elem: '#list_table', url: '', align: "center&qu ...

  7. RTC、直播、点播技术对比|腾讯云/即构/声网如何 选型 2025 版

    前言 作为一个有多年实战经验的开发者,在音视频技术领域我深刻体会到 RTC(实时通信).直播和点播三者的不同.虽然它们的核心都涉及音视频内容的传输,但在实际应用中,它们的技术实现.使用场景以及所面临的 ...

  8. vim中文乱码 vim字符集设置

    vim中文乱码 vim字符集设置 vim的设置一般放在/etc/vimrc文件中,不过,建议不要修改它.可以修改~/.vimrc文件(默认不存在,可以自己新建一个),写入所希望的设置. set fil ...

  9. SpringBoot+Nginx大文件传输

    Nginx配置 # 公众端的附件上传 location /api/visitor/upload { # Pass altered request body to this location uploa ...

  10. SpringBoot+微信支付-JSAPI

    引入微信支付SDK Maven: com.github.wechatpay-apiv3:wechatpay-java-core:0.2.12 Maven: com.github.wechatpay-a ...