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. 如何修改JSONObject 的值

    问 题 { "result": { "total": "3", "shops": [ { "shopId&qu ...

  2. DW004 - ArgoDB介绍

    ArgoDB:自主可控.国际领先.一站式满足湖仓集一体化建设的创新型分布式分析数据库 一.产品特点 统一的SQL编译引擎:支持标准SQL,兼容Teradata,Oracle,Db2等方言,应用开发门槛 ...

  3. 有关C++程序设计基础的各种考题解答参考汇总

    早先年考研的主考科目正是[算法与数据结构],复习得还算可以.也在当时[百度知道]上回答了许多相关问题,现把他们一起汇总整理一下,供读者参考. [1] 原题目地址:https://zhidao.baid ...

  4. 001.GItLab介绍及云原生部署

    目录 gitlab介绍 gitlab cicd简介 gitlab特点 git主要目录 版本区别 gitlab部署 Omnibus 部署 部署需求 安装依赖 导入软件源 正式安装 准备证书 配置SSL及 ...

  5. 读论文-协同过滤技术综述(A Survey of Collaborative Filtering Techniques)

    前言 今天读的一篇论文题目为<协同过滤技术综述>(A Survey of Collaborative Filtering Techniques),文章发表于<人工智能研究进展> ...

  6. LLM生成代码后,如何一键合并到源代码中(FastApply技术研究)

    背景 在大语言模型越来越火的今天,越来越多的应用场景开始使用大语言模型来解决实际问题.而辅助编程可以算是大语言模型应用得最成功的场景之一了.早先的时候,更多使用的还是代码补全的能力,但是现在,各家产品 ...

  7. 大模型基础补全计划(二)---词嵌入(word embedding)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明   无 前言   本文是这个系列第二篇,它们是: &l ...

  8. 使用SVM在数字验证码识别中的应用研究课程报告

    第1章 概要设计 1.1 设计目的 支持向量机作为一类强大的监督学习模型,以其出色的泛化能力,在手写数字识别.面部检测.图像分类等多个领域展现出了其优越性.其在处理小样本.非线性及高维模式识别任务中表 ...

  9. 几个技巧,教你去除文章的 AI 味!

    最近有不少朋友在利用 AI 写毕业设计论文,几秒钟一篇文章就刷出来的,爽的飞起. 结果万万没想到,人家论文查重服务也升级了,是不是用 AI 写的论文大概率都能被查出来... 这可如何是好啊?救救我救救 ...

  10. docker 版本号说明

    17.03 版本以前 Docker CE 在 17.03 版本之前叫 Docker Engine, 版本说明参考这里 => Docker Engine release notes, 可以看到 D ...