当前位置: 首页 > news >正文

当使用vcpkg安装的qt5时,在VS调用出现libcrypto-*-x64.dll不是有效路径时

英文解决站点

applocal.ps1 fails in Visual Studio 2019 because of wildcard path in VcpkgAppLocalDLLs · Issue #28614 · microsoft/vcpkg

 虽然这个bug不影响生成exe文件,第一次会弹出该错误,再次运行就正常,vcpkg会把对应的libcrypto-*-x64.dll版本复制到exe路径下..但是对于强迫症来说,还是别扭的.

找到vcpkg安装路径中  

release版路径

installed\<环境路径>\plugins\qtdeploy.ps1

# This script is based on the implementation of windeployqt for qt5.7.1
#
# Qt's plugin deployment strategy is that each main Qt Module has a hardcoded
# set of plugin subdirectories. Each of these subdirectories is deployed in
# full if that Module is referenced.
#
# This hardcoded list is found inside qttools\src\windeployqt\main.cpp. For
# updating, inspect the symbols qtModuleEntries and qtModuleForPlugin.# Note: this function signature and behavior is depended upon by applocal.ps1
function deployPluginsIfQt([string]$targetBinaryDir, [string]$QtPluginsDir, [string]$targetBinaryName) {$baseDir = Split-Path $QtPluginsDir -parent$binDir = "$baseDir\bin"function deployPlugins([string]$pluginSubdirName) {if (Test-Path "$QtPluginsDir\$pluginSubdirName") {Write-Verbose "  Deploying plugins directory '$pluginSubdirName'"New-Item "$targetBinaryDir\plugins\$pluginSubdirName" -ItemType Directory -ErrorAction SilentlyContinue | Out-NullGet-ChildItem "$QtPluginsDir\$pluginSubdirName\*.dll" | % {deployBinary "$targetBinaryDir\plugins\$pluginSubdirName" "$QtPluginsDir\$pluginSubdirName" $_.Nameresolve "$targetBinaryDir\plugins\$pluginSubdirName\$($_.Name)"}} else {Write-Verbose "  Skipping plugins directory '$pluginSubdirName': doesn't exist"}}# We detect Qt modules in use via the DLLs themselves. See qtModuleEntries in Qt to find the mapping.if ($targetBinaryName -match "Qt5Cored?.dll") {if (!(Test-Path "$targetBinaryDir\qt.conf")) {"[Paths]" | Out-File -encoding ascii "$targetBinaryDir\qt.conf"}} elseif ($targetBinaryName -match "Qt5Guid?.dll") {Write-Verbose "  Deploying platforms"New-Item "$targetBinaryDir\plugins\platforms" -ItemType Directory -ErrorAction SilentlyContinue | Out-NullGet-ChildItem "$QtPluginsDir\platforms\qwindows*.dll" | % {deployBinary "$targetBinaryDir\plugins\platforms" "$QtPluginsDir\platforms" $_.Name}deployPlugins "accessible"deployPlugins "imageformats"deployPlugins "iconengines"deployPlugins "platforminputcontexts"deployPlugins "styles"} elseif ($targetBinaryName -match "Qt5Networkd?.dll") {deployPlugins "bearer"if (Test-Path "$binDir\libcrypto-3-x64.dll"){deployBinary "$targetBinaryDir" "$binDir" "libcrypto-3-x64.dll"deployBinary "$targetBinaryDir" "$binDir" "libssl-3-x64.dll"}if (Test-Path "$binDir\libcrypto-3.dll"){deployBinary "$targetBinaryDir" "$binDir" "libcrypto-3.dll"deployBinary "$targetBinaryDir" "$binDir" "libssl-3.dll"}} elseif ($targetBinaryName -match "Qt5Sqld?.dll") {deployPlugins "sqldrivers"} elseif ($targetBinaryName -match "Qt5Multimediad?.dll") {deployPlugins "audio"deployPlugins "mediaservice"deployPlugins "playlistformats"} elseif ($targetBinaryName -match "Qt5PrintSupportd?.dll") {deployPlugins "printsupport"} elseif ($targetBinaryName -match "Qt5Qmld?.dll") {if(!(Test-Path "$targetBinaryDir\qml")){if (Test-Path "$binDir\..\qml") {cp -r "$binDir\..\qml" $targetBinaryDir} elseif (Test-Path "$binDir\..\..\qml") {cp -r "$binDir\..\..\qml" $targetBinaryDir} else {throw "FAILED"}}foreach ($a in @("Qt5Quick", "Qt5Quickd", "Qt5QmlModels", "Qt5QmlModelsd", "Qt5QuickControls2", "Qt5QuickControls2d", "Qt5QuickShapes", "Qt5QuickShapesd", "Qt5QuickTemplates2", "Qt5QuickTemplates2d", "Qt5QmlWorkerScript", "Qt5QmlWorkerScriptd", "Qt5QuickParticles", "Qt5QuickParticlesd", "Qt5QuickWidgets", "Qt5QuickWidgetsd")){if (Test-Path "$binDir\$a.dll"){deployBinary "$targetBinaryDir" "$binDir" "$a.dll"}}deployPlugins "scenegraph"deployPlugins "qmltooling"} elseif ($targetBinaryName -match "Qt5Quickd?.dll") {foreach ($a in @("Qt5QuickControls2", "Qt5QuickControls2d", "Qt5QuickShapes", "Qt5QuickShapesd", "Qt5QuickTemplates2", "Qt5QuickTemplates2d", "Qt5QmlWorkerScript", "Qt5QmlWorkerScriptd", "Qt5QuickParticles", "Qt5QuickParticlesd", "Qt5QuickWidgets", "Qt5QuickWidgetsd")){if (Test-Path "$binDir\$a.dll"){deployBinary "$targetBinaryDir" "$binDir" "$a.dll"}}deployPlugins "scenegraph"deployPlugins "qmltooling"} elseif ($targetBinaryName -like "Qt5Declarative*.dll") {deployPlugins "qml1tooling"} elseif ($targetBinaryName -like "Qt5Positioning*.dll") {deployPlugins "position"} elseif ($targetBinaryName -like "Qt5Location*.dll") {deployPlugins "geoservices"} elseif ($targetBinaryName -like "Qt5Sensors*.dll") {deployPlugins "sensors"deployPlugins "sensorgestures"} elseif ($targetBinaryName -like "Qt5WebEngineCore*.dll") {deployPlugins "qtwebengine"} elseif ($targetBinaryName -like "Qt53DRenderer*.dll") {deployPlugins "sceneparsers"} elseif ($targetBinaryName -like "Qt5TextToSpeech*.dll") {deployPlugins "texttospeech"} elseif ($targetBinaryName -like "Qt5SerialBus*.dll") {deployPlugins "canbus"}
}

        将文件中出现 libcrypto-*-x64.dll ,libssl-*-x64.dll中的*直接改为编译好的dll中的数字,笔者的vcpkg中的版本为3,所以改成了3就正常了,反正就是不要出现*号通配符.

deployPlugins "bearer"if (Test-Path "$binDir\libcrypto-*-x64.dll"){deployBinary "$targetBinaryDir" "$binDir" "libcrypto-*-x64.dll"deployBinary "$targetBinaryDir" "$binDir" "libssl-*-x64.dll"}if (Test-Path "$binDir\libcrypto-*.dll"){deployBinary "$targetBinaryDir" "$binDir" "libcrypto-*.dll"deployBinary "$targetBinaryDir" "$binDir" "libssl-*.dll"}改为:deployPlugins "bearer"if (Test-Path "$binDir\libcrypto-3-x64.dll"){deployBinary "$targetBinaryDir" "$binDir" "libcrypto-3-x64.dll"deployBinary "$targetBinaryDir" "$binDir" "libssl-3-x64.dll"}if (Test-Path "$binDir\libcrypto-3.dll"){deployBinary "$targetBinaryDir" "$binDir" "libcrypto-3.dll"deployBinary "$targetBinaryDir" "$binDir" "libssl-3.dll"}

debug版路径 

笔者电脑路径: G:\vcpkg\installed\x64-windows\debug\plugins

直接将release版本改好的替换即可,32位环境下也是一样的

http://www.lryc.cn/news/542005.html

相关文章:

  • 在 Vue 中处理跨域请求:全面解析与实践指南
  • 标量化rknn的输入输出向量转换处理
  • 认知重构 | 自我分化 | 苏格拉底式提问
  • Java集合之ArrayList(含源码解析 超详细)
  • Java笔记18
  • LangChain大模型应用开发:构建Agent智能体
  • 巧用GitHub的CICD功能免费打包部署前端项目
  • 【2】常用cmd命令大全、使用cmd运行和编译Java程序
  • UniApp SelectorQuery 讲解
  • 【行业解决方案篇十一】【DeepSeek零售分析:客流热力图生成系统】
  • 车载DoIP协议 --- TCP详细解析
  • C++关键字之mutable
  • 设计模式| 观察者模式 Observer Pattern详解
  • Git-速查
  • Spring Boot嵌入式服务器深度解析:从配置到调优的全方位指南
  • 深入解析浏览器渲染全流程:从URL输入到页面渲染的底层原理与性能优化(附实战代码)
  • 【网络安全】常见的web攻击
  • MySQL面试学习
  • 一文读懂Docker之Docker Compose
  • escape SQL中用法
  • Cherno C++ P57 Standard array处理静态数组
  • linux学习【7】Sourc Insight 4.0设置+操作
  • JDK、Hadoop下载地址
  • 【小白向超详细】使用 VSCode 远程连接 Linux 服务器详细教程
  • 设计心得——解耦的实现技术
  • 计算机毕业设计SpringBoot+Vue.jst在线文档管理系统(源码+LW文档+PPT+讲解)
  • 在windows下安装windows+Ubuntu16.04双系统(下)
  • 一文讲解Redis为什么读写性能高以及I/O复用相关知识点
  • TPU(Tensor Processing Unit)详解
  • Ubuntu20.04.2安装Vmware tools