我是来自Visual Studio的QT Creator的新手。我有一个包含两个项目的会话。一个是带有一些类的DLL,我打算将其用于其他目的。另一个是可执行的控制台应用程序,它使用DLL中的一些类。
我目前在QT Creator中并排这两个项目。我可以使用相对路径“../MyPrject/header.h”在我的EXE项目中包含DLL中的头文件。但是如何让QT Creator链接然后将DLL复制到可执行调试文件夹中进行调试。
我这样做是错的吗?有没有更好的办法?如果它包括向.pro文件添加代码,请包含一个链接,以便我了解更多信息。
答案 0 :(得分:0)
您应该在这些项目之间建立一些依赖关系。
exe-project
并选择添加库... 第二个选项:您可以创建子项目。关注文档中的QtCreator: Creating Projects
(Qt Creator中的帮助视图)
答案 1 :(得分:0)
GwyenBleidD为包含DLL提供了一个很好的起点。
然而,我已经养成了修改.pro file directly here的习惯,老实说,我更喜欢在出现问题时修改.pro文件。
假设我想使用winsock DLL。
在.pro文件中,我首先指定.dll对应的.lib文件:
# WinSock2 library (ws2_32.lib file)
LIBS += -lws2_32
# Path to the WinSock2 library
LIBS += -L"c:/mylibraries/"
此外,您还需要在此处为标头文件指定include path:
INCLUDEPATH += "c:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/INCLUDE"
第三,在我的代码中,我必须确保包含它的标题:
// I ASSUME it'll be found under something like the
// Visual Studio/VC/INCLUDE directory mentioned above.
#include <winsock2.h>
最后,您需要确保您的应用程序可以找到.dll文件,通常使用%PATH%环境变量指向。
关于您的设置,我确保您的子项目已配置,以便库编译FIRST(显然)。然后根据构建配置(debug | release)确保.Pro项目中的LIBS变量正确指向.lib目标。
Qt的PRO(qmake)并不像有些人那样糟糕。只要给它一个半小时到一个小时,你就可以了解它。我假设你对libs和DLL有很好的理解,但是没有。
答案 2 :(得分:0)
正确的方法是打开基于CMake的项目,并将exe和dll保留在一个根项目中。该决定的主要好处是独立于IDE的方法:您可以使用Qt Creator,CLion,Visual Studio,而无需更改项目定义。作为起点,请考虑看示例项目https://github.com/anatoly-spb/cmake_exe_dll