C++ 在使用Qt和DCMTK库时,如何解决Visual Studio中的LNK2019错误?

C++ 在使用Qt和DCMTK库时,如何解决Visual Studio中的LNK2019错误?,c++,qt,visual-studio-2013,lnk2019,dcmtk,C++,Qt,Visual Studio 2013,Lnk2019,Dcmtk,我知道这个问题已经被问了很多次了,但我很抱歉,我只是不知道我所做的有什么不对 我想要的是读取DICOM图像(按像素,因为我必须对其执行操作)并将其显示在QtGUI上 我有Windows 8和Visual Studio 2013。我下载了QtOpenSource和VS的插件。我使用cmakegui构建了Qt。然后,我在stackoverflow中讨论了“如何在Qt中使用DCMTK”的内容。我下载了DCMTK 3.6.0,使用cmake gui配置并生成了它,在VS中构建了它的所有构建和安装项目。到

我知道这个问题已经被问了很多次了,但我很抱歉,我只是不知道我所做的有什么不对

我想要的是读取DICOM图像(按像素,因为我必须对其执行操作)并将其显示在QtGUI上

我有Windows 8和Visual Studio 2013。我下载了QtOpenSource和VS的插件。我使用cmakegui构建了Qt。然后,我在stackoverflow中讨论了“如何在Qt中使用DCMTK”的内容。我下载了DCMTK 3.6.0,使用cmake gui配置并生成了它,在VS中构建了它的所有构建和安装项目。到目前为止,一切都是成功的。然后我尝试创建一个简单的程序来读取DICOM图像并显示它

我创建了一个新的Qt应用程序,并将其命名为MainWindow。这是我的mainwindow.cpp:

#include "mainwindow.h"
#include <dcmtk\config\osconfig.h>
#include <dcmtk\ofstd\ofcond.h>
#include <dcmtk\ofstd\ofstring.h>
#include <dcmtk\dcmdata\dctk.h>
#include <dcmtk\dcmdata\dcfilefo.h>
#include <dcmtk\dcmdata\dcitem.h>
#include <dcmtk\dcmdata\dcdeftag.h>
#include <dcmtk\dcmdata\dctagkey.h>

void MainWindow::tryDCMTK() {
    DcmFileFormat fileformat;
    OFCondition status = fileformat.loadFile("C:/Users/Kriselle/Documents/000004.dcm");
    if (status.good())
    {
        OFString patientsName;
        if (fileformat.getDataset()->findAndGetOFString(DCM_PatientName, patientsName).good())
        {
            printf("Patient's Name: %s",patientsName);
        }
        else
            printf("Error: cannot access Patient's Name!");
    }
    else
        printf("Error: cannot read DICOM file (%s)", status.text());
}

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
    ui.setupUi(this);
}

MainWindow::~MainWindow() {}
当我尝试运行它时,出现了以下7个LNK2019错误:

1>mainwindow.obj : error LNK2019: unresolved external symbol "public: __cdecl OFString::OFString(void)" (??0OFString@@QEAA@XZ) referenced in function "private: void __cdecl MainWindow::tryDCMTK(void)" (?tryDCMTK@MainWindow@@AEAAXXZ)
1>mainwindow.obj : error LNK2019: unresolved external symbol "public: __cdecl OFString::~OFString(void)" (??1OFString@@QEAA@XZ) referenced in function "private: void __cdecl MainWindow::tryDCMTK(void)" (?tryDCMTK@MainWindow@@AEAAXXZ)
1>mainwindow.obj : error LNK2019: unresolved external symbol "public: class OFCondition __cdecl DcmItem::findAndGetOFString(class DcmTagKey const &,class OFString &,unsigned long,bool)" (?findAndGetOFString@DcmItem@@QEAA?AVOFCondition@@AEBVDcmTagKey@@AEAVOFString@@K_N@Z) referenced in function "private: void __cdecl MainWindow::tryDCMTK(void)" (?tryDCMTK@MainWindow@@AEAAXXZ)
1>mainwindow.obj : error LNK2019: unresolved external symbol "public: __cdecl DcmFileFormat::DcmFileFormat(void)" (??0DcmFileFormat@@QEAA@XZ) referenced in function "private: void __cdecl MainWindow::tryDCMTK(void)" (?tryDCMTK@MainWindow@@AEAAXXZ)
1>mainwindow.obj : error LNK2019: unresolved external symbol "public: virtual __cdecl DcmFileFormat::~DcmFileFormat(void)" (??1DcmFileFormat@@UEAA@XZ) referenced in function "private: void __cdecl MainWindow::tryDCMTK(void)" (?tryDCMTK@MainWindow@@AEAAXXZ)
1>mainwindow.obj : error LNK2019: unresolved external symbol "public: class DcmDataset * __cdecl DcmFileFormat::getDataset(void)" (?getDataset@DcmFileFormat@@QEAAPEAVDcmDataset@@XZ) referenced in function "private: void __cdecl MainWindow::tryDCMTK(void)" (?tryDCMTK@MainWindow@@AEAAXXZ)
1>mainwindow.obj : error LNK2019: unresolved external symbol "public: virtual class OFCondition __cdecl DcmFileFormat::loadFile(char const *,enum E_TransferSyntax,enum E_GrpLenEncoding,unsigned long,enum E_FileReadMode)" (?loadFile@DcmFileFormat@@UEAA?AVOFCondition@@PEBDW4E_TransferSyntax@@W4E_GrpLenEncoding@@KW4E_FileReadMode@@@Z) referenced in function "private: void __cdecl MainWindow::tryDCMTK(void)" (?tryDCMTK@MainWindow@@AEAAXXZ)
1>C:\Users\Kriselle\documents\visual studio 2013\Projects\MainWindow\x64\Debug\\MainWindow.exe : fatal error LNK1120: 7 unresolved externals
我已研究过其他讨论: *链接1**表示必须在属性->链接器->附加库依赖项中链接库。我已经做到了。我的附加库依赖项和环境变量的屏幕截图可以在下面附带的zip文件中找到

*链路2**具有不同的错误输出。(我已经过去了)。 *链接3**说“在项目配置对话框中查找链接器标志/设置”,但我不知道我的链接器设置有什么问题。我甚至在附加依赖项中列出了lib目录中的库。(下面的zip文件中还包含我的其他依赖项的屏幕截图。) 我也做了*链接4**上的建议。 此外,我相信我没有犯*Link 5**中显示的错误,因为我没有函数的参数

图像在这里我查看的在线讨论链接如下:

虽然我很想让你更容易看到图片和导航到链接,但我很抱歉,由于我缺乏声誉,我最多只能发布两个链接

请帮帮我。非常感谢您抽出时间


编辑:由于Hans在评论中给出的链接,我根据库的依赖关系更改了它们的顺序,并将NetAPI32.lib和WSock32.lib添加到了我的库中。但是我仍然会遇到同样的错误。

您是否将libs添加到与您尝试编译的配置相同的配置(如Debug/Release、Win32/x64)中?您只需要链接更多库,而dcmdata是不够的。“应该能给你一些启示。”谢尔盖·罗格奇:是的。每当我编辑属性时,我总是对所有配置进行编辑。@HansPassant dcmdata不是我链接的唯一库。以下是我的其他依赖项的屏幕截图:。我查看了您提供的链接(感谢您的支持),并根据库的依赖关系更改了库的顺序,还添加了NetAPI32.lib和WSock32.lib,但仍存在7个错误。那么您是如何解决此问题的?我也有同样的问题…您是否将libs添加到与您尝试编译的配置相同的配置(如Debug/Release、Win32/x64)中?您只需要链接更多库,而dcmdata是不够的。“应该能给你一些启示。”谢尔盖·罗格奇:是的。每当我编辑属性时,我总是对所有配置进行编辑。@HansPassant dcmdata不是我链接的唯一库。以下是我的其他依赖项的屏幕截图:。我查看了您提供的链接(感谢您的支持),并根据库的依赖关系更改了库的顺序,还添加了NetAPI32.lib和WSock32.lib,但仍存在7个错误。那么您是如何解决此问题的?我也有同样的问题。。。
# ----------------------------------------------------
# This file is generated by the Qt Visual Studio Add-in.
# ------------------------------------------------------

TEMPLATE = app
TARGET = MainWindow
DESTDIR = ../Win32/Debug
QT += core widgets gui
CONFIG += debug console
DEFINES += WIN64 QT_DLL QT_WIDGETS_LIB _REENTRANT
INCLUDEPATH += ./GeneratedFiles \
    . \
    ./GeneratedFiles/Debug \
    "C:/Program Files (x86)/DCMTK/include"
DEPENDPATH += .
MOC_DIR += ./GeneratedFiles/debug
OBJECTS_DIR += debug
UI_DIR += ./GeneratedFiles
RCC_DIR += ./GeneratedFiles
HEADERS += ../../../../../../../DICOMSDL/include/dicom.h \
    ./dicomcfg.h \
    ./mainwindow.h
SOURCES += ./main.cpp \
    ./mainwindow.cpp
FORMS += ./mainwindow.ui
RESOURCES += mainwindow.qrc

QMAKE_CFLAGS_RELEASE -= -MD
QMAKE_CFLAGS_RELEASE = -MT
QMAKE_CFLAGS_DEBUG -= -MDd
QMAKE_CFLAGS_DEBUG = -MTd
QMAKE_CXXFLAGS_RELEASE -= -MD
QMAKE_CXXFLAGS_RELEASE += -MT
QMAKE_CXXFLAGS_DEBUG -= -MDd
QMAKE_CXXFLAGS_DEBUG += -MTd

#a example: LIBS += -L"../../../test_dcmtk/DCMTK/lib" \
LIBS += -L"C:/Program Files (x86)/DCMTK/lib" \
-lconfig \
-lofstd \
-ldcmdata \
-loflog \
-lws2_32 \
-lnetapi32 \
-lwsock32 \
-ladvapi32 
1>mainwindow.obj : error LNK2019: unresolved external symbol "public: __cdecl OFString::OFString(void)" (??0OFString@@QEAA@XZ) referenced in function "private: void __cdecl MainWindow::tryDCMTK(void)" (?tryDCMTK@MainWindow@@AEAAXXZ)
1>mainwindow.obj : error LNK2019: unresolved external symbol "public: __cdecl OFString::~OFString(void)" (??1OFString@@QEAA@XZ) referenced in function "private: void __cdecl MainWindow::tryDCMTK(void)" (?tryDCMTK@MainWindow@@AEAAXXZ)
1>mainwindow.obj : error LNK2019: unresolved external symbol "public: class OFCondition __cdecl DcmItem::findAndGetOFString(class DcmTagKey const &,class OFString &,unsigned long,bool)" (?findAndGetOFString@DcmItem@@QEAA?AVOFCondition@@AEBVDcmTagKey@@AEAVOFString@@K_N@Z) referenced in function "private: void __cdecl MainWindow::tryDCMTK(void)" (?tryDCMTK@MainWindow@@AEAAXXZ)
1>mainwindow.obj : error LNK2019: unresolved external symbol "public: __cdecl DcmFileFormat::DcmFileFormat(void)" (??0DcmFileFormat@@QEAA@XZ) referenced in function "private: void __cdecl MainWindow::tryDCMTK(void)" (?tryDCMTK@MainWindow@@AEAAXXZ)
1>mainwindow.obj : error LNK2019: unresolved external symbol "public: virtual __cdecl DcmFileFormat::~DcmFileFormat(void)" (??1DcmFileFormat@@UEAA@XZ) referenced in function "private: void __cdecl MainWindow::tryDCMTK(void)" (?tryDCMTK@MainWindow@@AEAAXXZ)
1>mainwindow.obj : error LNK2019: unresolved external symbol "public: class DcmDataset * __cdecl DcmFileFormat::getDataset(void)" (?getDataset@DcmFileFormat@@QEAAPEAVDcmDataset@@XZ) referenced in function "private: void __cdecl MainWindow::tryDCMTK(void)" (?tryDCMTK@MainWindow@@AEAAXXZ)
1>mainwindow.obj : error LNK2019: unresolved external symbol "public: virtual class OFCondition __cdecl DcmFileFormat::loadFile(char const *,enum E_TransferSyntax,enum E_GrpLenEncoding,unsigned long,enum E_FileReadMode)" (?loadFile@DcmFileFormat@@UEAA?AVOFCondition@@PEBDW4E_TransferSyntax@@W4E_GrpLenEncoding@@KW4E_FileReadMode@@@Z) referenced in function "private: void __cdecl MainWindow::tryDCMTK(void)" (?tryDCMTK@MainWindow@@AEAAXXZ)
1>C:\Users\Kriselle\documents\visual studio 2013\Projects\MainWindow\x64\Debug\\MainWindow.exe : fatal error LNK1120: 7 unresolved externals