【问题标题】:Missing DLL in my project during compilation编译期间我的项目中缺少 DLL
【发布时间】:2021-04-10 07:20:05
【问题描述】:

我是 conan/premake 的新手,我已经制作了一个 conanlist 和一个 premake 来设置我的项目。 但是当我在发布模式下执行我的项目时,我会收到QT6Widgets.dll is missingQT6Core.dll is missing。我不知道如何解决这个问题。这是我的conanfile

[requires]
glfw/3.3@bincrafters/stable
qt/6.0.1@bincrafters/stable
boost/1.75.0
[generators]
premake

这是我做的预制件

include "build/conanbuildinfo.premake.lua"

workspace "TileEditor"
    conan_basic_setup()

    configurations
    {
        "Debug",
        "Release",
        "Dist"
    }

outputdir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}"

project "TileEditor"
    location "TileEditor"
    kind "WindowedApp"
    language "C++"

    targetdir ("bin/" .. outputdir .. "/%{prj.name}")
    objdir ("bin-obj/" .. outputdir .. "/%{prj.name}")

    linkoptions { conan_exelinkflags }

    files
    {
        "**.h", "**.cpp" 
    }

    filter "configurations:Debug"
    defines { "DEBUG" }
    symbols "On"

    filter "configurations:Release"
    defines { "NDEBUG" }
    optimize "On"

【问题讨论】:

  • 您需要将 dll 复制到您的可执行目录或将它们添加到您的路径中。 dll 在编译期间没有丢失(或必需),它们在运行时丢失
  • @AlanBirtles 好的,但柯南假设会自动下载/安装并设置所有内容,我怎么知道这些文件的位置?
  • 你需要告诉柯南你想要那种行为docs.conan.io/en/latest/using_packages/…

标签: c++ conan


【解决方案1】:

动态链接库或简称 DLL,在编译时不会链接到您的应用程序。编译时喜欢的库类型是静态库(.lib 文件)。

默认情况下,当您尝试执行应用程序时,系统会检查所需的 DLL 是否在工作目录中(在应用程序所在的目录中)。如果没有找到,它将检查默认系统目录。如果这也失败了,就会弹出一个错误。

因此,要解决您的问题,请从 Qt 安装目录复制 QT6Widgets.dllQT6Core.dll 文件,并将它们放在应用程序的工作目录中。

【讨论】:

  • 好的,但是柯南自动设置了一切,我怎么知道这些文件的位置?
  • 使用 conan info --path 命令发现工件的安装位置:docs.conan.io/en/latest/reference/commands/consumer/info.html。无论如何,.DLL 文件必须安装在 bin/ 文件夹中,这是 Visual Studio 的约定,柯南也是如此。
猜你喜欢
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 2018-10-28
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
  • 2013-06-20
相关资源
最近更新 更多