小白问个 vcpkg 相关的问题

1 天前
 xlpxx

我用 vcpkg 的清单模式管理项目依赖的三方库(主要是 opencv ),当我配置好后,项目也能编过。但是运行的时候总是报缺 cv 的 dll ,但是之前是没有这个问题的,cmakelist 文件也没有改过,想知道这个坑到底在哪里

631 次点击
所在节点    C++
7 条回复
mrsecond
1 天前
建议贴出 cmakelist 和报错信息
xlpxx
1 天前
@mrsecond
报错主要是缺少 cv 的 dll ,比如这个”由于找不到 opencv_dnn4d.dll ,无法继续执行代码。重新安装程序可能会解决此问题“ cmakelist 很简单,set(CMAKE_PREFIX_PATH
"${CMAKE_CURRENT_LIST_DIR}/vcpkg_installed/x64-windows") 只是指定了 vcpkginstall 目录,后面就是 find_package(OpenCV CONFIG REQUIRED)
target_link_libraries(${TARGET_NAME} PRIVATE ${OpenCV_LIBS})
Shatyuka
1 天前
试试 set(X_VCPKG_APPLOCAL_DEPS_INSTALL ON)
hwdq0012
1 天前
用什么 ide / 编译器
1. 发布时用 release
2. 看 ide 里的 gdb log 或 msvc log 可以看到所有加载的模块, 复制下来让 llm 帮你处理成脚本,复制所有模块到程序目录,或设置到环境变量,win 上是 PATH, linux 是 LD_LIBRAYR_PATH
mrsecond
1 天前
试一试这种方式引入 vcpkg:
if(DEFINED ENV{VCPKG_ROOT})
message("VCPKG_ROOT: $ENV{VCPKG_ROOT}")
else()
message("NOT DEFINED VCPKG_ROOT VARIABLES")
endif()

set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "")
xlpxx
1 天前
@mrsecond 问题解决了,主要是原因是没有指定 CMAKE_TOOLCHAIN_FILE 的路径,导致不会自动把 dll 复制到运行目录下
funcman
22 小时 43 分钟前
主要是生成文件的位置问题
之前行可能是某一次某些文件刚好在一个可及的位置,且没有被清理掉

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1156174

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX