V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xlpxx
V2EX  ›  C++

小白问个 vcpkg 相关的问题

  •  1
     
  •   xlpxx · 19 小时 41 分钟前 · 493 次点击

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

    7 条回复    2025-09-01 21:40:03 +08:00
    mrsecond
        1
    mrsecond  
       19 小时 37 分钟前
    建议贴出 cmakelist 和报错信息
    xlpxx
        2
    xlpxx  
    OP
       19 小时 21 分钟前
    @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
        3
    Shatyuka  
       18 小时 35 分钟前
    试试 set(X_VCPKG_APPLOCAL_DEPS_INSTALL ON)
    hwdq0012
        4
    hwdq0012  
       18 小时 29 分钟前
    用什么 ide / 编译器
    1. 发布时用 release
    2. 看 ide 里的 gdb log 或 msvc log 可以看到所有加载的模块, 复制下来让 llm 帮你处理成脚本,复制所有模块到程序目录,或设置到环境变量,win 上是 PATH, linux 是 LD_LIBRAYR_PATH
    mrsecond
        5
    mrsecond  
       18 小时 15 分钟前
    试一试这种方式引入 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
        6
    xlpxx  
    OP
       17 小时 11 分钟前
    @mrsecond 问题解决了,主要是原因是没有指定 CMAKE_TOOLCHAIN_FILE 的路径,导致不会自动把 dll 复制到运行目录下
    funcman
        7
    funcman  
       8 小时 10 分钟前 via iPhone
    主要是生成文件的位置问题
    之前行可能是某一次某些文件刚好在一个可及的位置,且没有被清理掉
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   915 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 21:50 · PVG 05:50 · LAX 14:50 · JFK 17:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.