如何将dcmtk库添加到QTCreator项目中?

How can I add dcmtk libraries to QTCreator project?

本文关键字:QTCreator 项目 添加 dcmtk      更新时间:2023-10-16

我是QTCreator的新手。我在Visual studio中使用Dcmtk库制作了一个小程序,现在我正在尝试使用GUI制作这个程序,为此我正在尝试在QTCreator中制作相同的程序,以便我可以添加GUI功能。但是,当我尝试将头文件和.lib文件添加到QTCreator时,问题就出现了。在Visual studio中编写程序时,我添加了以下库:

dcmdata.lib
oflog.lib
ofstd.lib
ws2_32.lib
netapi32.lib

带有用于调试模式的库目录:

D:dcmtk-3.6.0Lib filesDebug;

, release mode为

D:dcmtk-3.6.0Lib filesRelease;

为了在Visual Studio中添加头文件,我将include目录设置为:

D:dcmtk-3.6.0Prefix Filesinclude;

因此,对于QTCreator在。pro文件中,我编辑并添加了库文件和头文件目录,并指出了我需要的库文件和。pro文件如下所示:

#-------------------------------------------------
#
# Project created by QtCreator 2013-05-02T10:59:41
#
#-------------------------------------------------
QT       += core#adding the core framework
QT       -= gui#removing the gui portion
TARGET = untitled#targetting the project
CONFIG   += console#defining that it is console application
CONFIG   -= app_bundle#
TEMPLATE = app

SOURCES += main.cpp#adding the main.cpp as source file
LIBS +="D:/dcmtk-3.6.0/Lib files/Release"
-ldcmdata
-loflog
-lofstd
-lws2_32
-lnetapi32
-wsock32
LIBS +="D:/dcmtk-3.6.0/Lib files/Debug"
-ldcmdata
-loflog
-lofstd
-lws2_32
-lnetapi32
-lwsock32
INCLUDEPATH += "D:/dcmtk-3.6.0/Prefix Files/include"

我还没有开始编程,但我只是使用#include指令添加了头文件的名称,代码如下:

#include <QCoreApplication>
#include <QDebug>
#include "dcmtk/config/osconfig.h"
#include "dcmtk/dcmdata/dctk.h"
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QString mystr="Hellow world";
    qDebug() <<mystr;
    return a.exec();
}

但是当我试图构建它时,这会产生错误。错误如下:

D:QtFilesuntitledmain.cpp:3: error: C1083: Cannot open include file: '/dcmtk/config/osconfig.h': No such file or directory

似乎我在链接头文件和lib文件到程序时犯了一些错误。编程代码

中的两行
#include "dcmtk/config/osconfig.h"
    #include "dcmtk/dcmdata/dctk.h"

在Visual Studio中没有给出错误,所以我确信它们没有任何问题。你能告诉我我在链接外部头文件和lib文件做什么错误吗?

解决方案:

我改变了.pro文件中链接外部到以下内容的行,它工作了:

LIBS += -L"D:/dcmtk-3.6.0/Lib files/Release" 
-ldcmdata
-loflog
-lofstd
-lws2_32
-lnetapi32
-lwsock32
LIBS += -L"D:/dcmtk-3.6.0/Lib files/Debug" 
-ldcmdata
-loflog
-lofstd
-lws2_32
-lnetapi32
-lwsock32
INCLUDEPATH += "D:/dcmtk-3.6.0/Prefix Files/include/"
  1. 你在INCLUDEPATH中忘记了引号
  2. LIBS
  3. 路径前忘记-L前缀
  4. 你在LIBS的path后面忘记了
  5. 你不应该使用绝对路径。如果有必要,把它提取到变量中。
  6. 你应该使用CONFIG(debug, debug|release)将调试和发布案例分开

那么,你的项目应该看起来像

QT       = core
TARGET = untitled#targetting the project
CONFIG   += console#defining that it is console application
CONFIG   -= app_bundle#
TEMPLATE = app
DCMTK="D:/dcmtk-3.6.0"
DCMTK_LIBS_PREFIX=$$DCMTK"/Lib files"
DCMTK_INCLUDE=$$DCMTK"/Prefix Files/include"
INCLUDEPATH+=$$DCMTK_INCLUDE
SOURCES += main.cpp#adding the main.cpp as source file
CONFIG(debug, debug|release) {
LIBS +=-L$$DCMTK_LIBS_PREFIX/Debug
} else {
LIBS +=-L$$DCMTK_LIBS_PREFIX/Release
}
LIBS+= -ldcmdata -loflog -lofstd -lws2_32 -lnetapi32 -wsock32