如何在不复制dll文件的情况下启动QT程序

时间:2016-02-24 03:33:00

标签: c++ cmake qt5.5

我写了一个小Qt程序(在Windows上),我遇到了以下情况:

使用CMake,我生成了我的make文件来构建程序,如下所示

cmake_minimum_required(VERSION 3.5)
project(helloworld)

SET(C++_STD_FLAG "c++11" CACHE STRING "e.g. c++98,c++11,c++14,...")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=${C++_STD_FLAG}")

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
find_package(Qt5Widgets)

add_executable(main main.cxx)
target_link_libraries(main Qt5::Widgets Qt5::Gui Qt5::Core)

如果我想启动" main.exe",则会显示一条消息,指出找不到某些DLL。 DLL是Qt5Widget.dll,Qt5Core.dll,Qt5Gui.dll。如果我将它们复制到与" main.exe"相同的文件夹中。一切正常。

如何启动" main.exe"没有将DLL复制到目录?

编辑: DLL所在的路径已添加到Windows中的PATH变量中。但是,它不起作用。

编辑:我还附加了main.cpp的代码

#include <QtWidgets>
#include <QApplication>

int main(int argc,char **argv){
  QApplication app(argc,argv);
  QWidget window;
  window.setWindowTitle("Hallo Qt");
  QPushButton *button = new QPushButton("Ende");
  QVBoxLayout *layout = new QVBoxLayout;
  layout->addWidget(button);
  window.setLayout(layout);
  window.show();
  return app.exec();
}

编辑:我发现了这个问题,但这引出了一个问题: 我还安装了PyQt,它在PATH变量中具有更高的优先级。所以我让其他Qt安装更高,并且工作正常。

但是,如何判断可执行文件是否使用特定的DLL?因为,如果我使用Qt Creater编译程序,即使PyQt在PATH变量中具有更高的优先级,它也能正常工作。

提前致谢

0 个答案:

没有答案