Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.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
C++ 将DCMTK与Visual Studio一起使用时出现链接器错误LNK2019_C++_Visual Studio 2013_Lnk2019_Dcmtk - Fatal编程技术网

C++ 将DCMTK与Visual Studio一起使用时出现链接器错误LNK2019

C++ 将DCMTK与Visual Studio一起使用时出现链接器错误LNK2019,c++,visual-studio-2013,lnk2019,dcmtk,C++,Visual Studio 2013,Lnk2019,Dcmtk,这不是一个新问题,但解决方案对我来说并不奏效。我想用C++来读取DICOM文件。我有32位Windows PC和VS 2013社区版 其中的其他答案建议使用DCMTK。我安装了DCMTK(使用CMake,后跟VS),并使用中提供的指南和链接将其配置为与VS一起使用。然后我写了一篇简单的文章,并试图编译它: #include "stdafx.h" #include "dcmtk\dcmdata\dctk.h" #include "dcmtk\config\osconfig.h" #include

这不是一个新问题,但解决方案对我来说并不奏效。我想用C++来读取DICOM文件。我有32位Windows PC和VS 2013社区版

其中的其他答案建议使用DCMTK。我安装了DCMTK(使用CMake,后跟VS),并使用中提供的指南和链接将其配置为与VS一起使用。然后我写了一篇简单的文章,并试图编译它:

#include "stdafx.h"
#include "dcmtk\dcmdata\dctk.h"
#include "dcmtk\config\osconfig.h"
#include "dcmtk\dcmimgle\dcmimage.h"
#include <iostream>
using namespace std;

int main()
{
    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
            cerr << "Error: cannot load DICOM image (" << DicomImage::getString(image->getStatus()) << ")" << endl;
    }
    delete image; 
    return 0;
}
此错误似乎很常见,但以下解决方案均不适用于我:

  • 和DCMTK论坛:它建议使用特定顺序的lib文件被包括在内。我包含文件的顺序如下(我也尝试了相反的顺序,但没有成功):

  • 所有这些都不起作用事实上,我不确定应该包括哪些库文件?如何决定?

    我还将“C:\Program Files\DCMTK\lib”包含在其他库目录下,并将“C:\Program Files\DCMTK\include”包含在项目属性的其他包含目录下

  • 至少stackoverflow尚未回答。评论建议通过禁用DCMTK_OVERWRITE_WIN32_COMPILER_标志重新运行CMake。我没有这么做,因为上面说除非你真的知道自己在做什么,否则不要禁用它
    有人能给我引路吗

    NetBios函数位于NETAPI32.LIB中,因此您可以尝试将NETAPI32.LIB(位于列表中)移动到该列表的顶部。

    NetBios函数位于NETAPI32.LIB中,因此您可以尝试将NETAPI32.LIB(位于列表中)移动到该列表的顶部。

    不确定您使用的是哪个版本的DCMTK,但对于当前的开发快照,您需要以下标准库(在Windows上):“ws2_32 netapi32 wsock32”。这些信息可以在DCMTK的CMake文件中找到。顺便说一下,您的项目似乎没有使用CMake,对吗?

    不确定您使用的是哪个版本的DCMTK,但对于当前的开发快照,您需要以下标准库(在Windows上):“ws2_32 netapi32 wsock32”。这些信息可以在DCMTK的CMake文件中找到。顺便说一下,您似乎没有在项目中使用CMake,对吗?

    我认为您将dcmsign.lib拼错为dcmsig.lib

    如果更改该选项无法解决此问题,我建议根据您链接到的支持页面执行以下顺序: NetAPI32.lib WSock32.lib OFSD.lib oflog.lib dcmdata.lib dcmsign.lib dcmnet.lib dcmsr.lib dcmqrdb.lib dcmtls.lib dcmwlm.lib dcmimgle.lib dcmpstat.lib dcmjpls.lib dcmjpeg.lib dcmimage.lib ijg16.lib ijg12.lib ijg8.lib


    我认为在此列表中,每个库都必须位于它所依赖的所有库之后。

    我认为您将dcmsign.lib拼错为dcmsig.lib

    如果更改该选项无法解决此问题,我建议根据您链接到的支持页面执行以下顺序: NetAPI32.lib WSock32.lib OFSD.lib oflog.lib dcmdata.lib dcmsign.lib dcmnet.lib dcmsr.lib dcmqrdb.lib dcmtls.lib dcmwlm.lib dcmimgle.lib dcmpstat.lib dcmjpls.lib dcmjpeg.lib dcmimage.lib ijg16.lib ijg12.lib ijg8.lib


    我认为在这个列表中,每个库都必须位于它所依赖的所有库之后。

    检查你的.lib和vs平台如果相同,这样的lib用于x64,那么你的vs平台必须是x64。

    检查你的.lib和vs平台如果相同,这样的lib用于x64,那么你的vs平台必须是x64。

    我有同样的错误。您可以转到项目属性->链接器->输入->其他依赖项->编辑->在所有其他库之前添加这两个库-(netapi32.lib、wsock32.lib)。这为我解决了这个错误

    我也犯了同样的错误。您可以转到项目属性->链接器->输入->其他依赖项->编辑->在所有其他库之前添加这两个库-(netapi32.lib、wsock32.lib)。这为我解决了这个错误

    我将NETAPI32.lib移到顶部,保持列表的其余部分不变,但它不起作用:(我将NETAPI32.lib移到顶部,保持列表的其余部分不变,但它不起作用:(我使用DCMTK 3.6.0,我正在使用CMake。我也尝试包括ws2_32,但仍然不起作用。(我查看了CmakeLists.txt以查找此信息,谢谢。)我使用的是DCMTK 3.6.0,我正在使用CMake。我也尝试过包含ws2_32,但仍然不起作用。(我查看了CmakeLists.txt以查找此信息,谢谢。)事实上,我没有任何这样的文件dcmsign.lib。相反,我有dcmdsig.lib,这就是我所提到的。我也尝试了你建议的顺序,还包括了@J.Riesmeier建议的ws2_32.lib,但它仍然不起作用。对于我跟随这篇文章的顺序:但它似乎建议了另一种方式(与你所说的相比)。我不确定哪一个是正确的,因此我也尝试了相反的顺序,但它不起作用。是的,库名称实际上是“dcmdsig.lib”,即,由于与命令行工具“dcmsign”冲突,与DCMTK的模块目录名称不相同.关于库顺序:据我所知,VisualStudio不像gcc(或其链接器)那样挑剔是。@ruchir您是否已经启用了链接器的详细模式?@J.Riesmeier我现在已经启用了详细模式。现在我看到了3000多行输出。这可以用来定位错误源吗?@ruchir通常是的。这就是我推荐它的原因:)在链接器的详细输出中,您应该能够看到哪些库从哪些目录链接到您的程序,当然,还有关于链接器错误的更多详细信息。正如您所说:输出非常详细,因此您需要一些经验或耐心才能找到相关行。事实上,我没有任何此类文件,dcmsign.lib。取而代之的是我提到的dcmdsig.lib。我还尝试了您建议的顺序,还包括了@J.Riesmeier建议的ws2_32.lib
    dcmdata.lib(dcuid.obj) : error LNK2019: unresolved external symbol _Netbios@4 referenced in function "unsigned char * __cdecl getMACAddress(unsigned char * const)" (?getMACAddress@@YAPAEQAE@Z)