Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMake链接Qt5::Svg,但QImageReader看不到_C++_Qt_Cmake - Fatal编程技术网

C++ CMake链接Qt5::Svg,但QImageReader看不到

C++ CMake链接Qt5::Svg,但QImageReader看不到,c++,qt,cmake,C++,Qt,Cmake,我最近更换了我的电脑(Windows 10),所以我重新安装了CLion和Qt(使用CMake编译)。但是我的一个项目已经不起作用了 我已将Qt5::Svg添加到CMake中,它已编译,但在应用程序中未显示Svg。如果我尝试使用QImageReader::supportedImageFormats(),则不会列出“SVG” 我在生成目录中有Qt5Svgd.dll 这里是我的CMake配置: cmake_minimum_required(VERSION 3.16) project(NBTModif

我最近更换了我的电脑(Windows 10),所以我重新安装了CLion和Qt(使用CMake编译)。但是我的一个项目已经不起作用了

我已将Qt5::Svg添加到CMake中,它已编译,但在应用程序中未显示Svg。如果我尝试使用QImageReader::supportedImageFormats(),则不会列出“SVG”

我在生成目录中有Qt5Svgd.dll

这里是我的CMake配置:

cmake_minimum_required(VERSION 3.16)
project(NBTModifier)

set(CMAKE_CXX_STANDARD 20)

find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5Widgets REQUIRED)
find_package(Qt5Svg REQUIRED)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

include_directories(${CMAKE_BINARY_DIR})
add_executable(
    NBTModifier

    main.cpp
    MainWindow/MainWindow.ui MainWindow/MainWindow.h MainWindow/MainWindow.cpp

    icons/breeze.qrc icons/breeze-dark.qrc
)
target_link_libraries(NBTModifier Qt5::Widgets Qt5::Svg)
我错过什么了吗

编辑:根据建议,我运行DependencyWalker:我的“NBTModifier.exe”似乎不依赖Qt5Svgd.dll。它解释了为什么QImageReader不显示它


那么为什么CMake不将Qt5Svg链接到我的应用程序?

要在应用程序中显示SVG图像(即图标),您需要相应的imageformat插件,该插件正在运行时加载(这就是DependenyWalker不显示它的原因)。查看
QTDIR/plugins/imageformats
dir,查找
qsvg.dll
libqsvg.dll
,如果需要,将其复制到运行时目录中。有关相应的文档,请参阅。

运行软件时,请与DependencyWalker(或DependencyWalker)检查SVG DLL是否正确找到并加载。建议不错。问题更新:DLL没有链接
谢谢,它可以工作。使用主题系统,我还添加了
platformthemes`和iconengine。但是,我不明白为什么我以前的计算机不需要它们。我猜在你以前的系统上,QTDIR被添加到了你的路径中,所以你的可执行文件找到了它,即使它不在运行时目录中。在Windows上设置Qt开发环境和运行Qt应用程序几乎是一种魔术,至少对我来说,作为一个Unix/Linux的家伙。。。有关dll查找的详细信息,请参阅