Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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
如何将Dcmtk与Qt for Linux正确链接?_Linux_Qt_Ubuntu_Dcmtk - Fatal编程技术网

如何将Dcmtk与Qt for Linux正确链接?

如何将Dcmtk与Qt for Linux正确链接?,linux,qt,ubuntu,dcmtk,Linux,Qt,Ubuntu,Dcmtk,我的目标是打开Dicom文件并将其转换为cv::Mat,以使用Opencv处理它们 我已经在Ubuntu18.4.1上编译了dcmtk 3.6.3,并尝试将它与Qt5.11.1和QtCreator 4.6.2链接起来,但没有成功 # pro file QT += core QT -= gui TARGET = DcmtkTesting CONFIG += console CONFIG -= app_bundle TEMPLATE = app DCMTK_P

我的目标是打开Dicom文件并将其转换为cv::Mat,以使用Opencv处理它们

我已经在Ubuntu18.4.1上编译了dcmtk 3.6.3,并尝试将它与Qt5.11.1和QtCreator 4.6.2链接起来,但没有成功

# pro file
QT       += core
QT       -= gui

TARGET = DcmtkTesting
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


DCMTK_PREFIX = "/home/ismail/dcmtk363"
DCMTK_LIBS_PREFIX=$$DCMTK_PREFIX"/lib"
DCMTK_INCLUDE=$$DCMTK_PREFIX"/include"
INCLUDEPATH+=$$DCMTK_INCLUDE

LIBS += -L$$DCMTK_LIBS_PREFIX

SOURCES += main.cpp
主要是: #包括

#include "dcmtk/config/osconfig.h"
#include "dcmtk/dcmdata/dctk.h"
#include <dcmtk/dcmimgle/dcmimage.h>

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    DicomImage *image = new DicomImage("test.dcm");
    if (image != NULL)
    {
      if (image->getStatus() == EIS_Normal)
      {
        if (image->isMonochrome())
        {
          image->setMinMaxWindow();
          Uint8 *pixelData = (Uint8 *)(image->getOutputData(8 /* bits*/));
          if (pixelData != NULL)
          {
            /* do something useful with the pixel data */
          }
        }
      } else
        cout << "Error: cannot load DICOM image (" <<   DicomImage::getString(image->getStatus()) << ")" << endl;
    }
    delete image;

    return a.exec();
}
#包括“dcmtk/config/osconfig.h”
#包括“dcmtk/dcmdata/dctk.h”
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[])
{
qcorea应用程序(argc、argv);
DicomImage*图像=新的DicomImage(“test.dcm”);
如果(图像!=NULL)
{
如果(图像->获取状态()==EIS\U正常)
{
如果(图像->IsMonocrome())
{
image->setMinMaxWindow();
Uint8*像素数据=(Uint8*)(图像->获取输出数据(8/*位*/);
if(像素数据!=NULL)
{
/*对像素数据做一些有用的事情*/
}
}
}否则

cout错误表明链接器找不到库提供的符号(方法)。在
.pro
文件中,您将链接器指向库所在的目录,但忘记指定应链接的库

因此,您必须相应地修改行
LIBS+=…
,例如:

LIBS += -L$$DCMTK_LIBS_PREFIX -ldcmtk
因为我不知道库的实际名称,所以在我的示例中使用了
dcmtk
。您可能必须采用它来适应您的构建环境。只需确保您有
-l
(小写
l
),紧跟着库名称