这不是一个新问题,但解决方案对我不起作用。我想使用 C++ 读取 dicom 文件。我有带有 VS 2013 社区版的 32 位 Windows PC。
这篇文章和其中的其他答案建议使用 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;
}
编译后,它给出以下错误:
dcmdata.lib(dcuid.obj) : error LNK2019: unresolved external symbol _Netbios@4 referenced in function "unsigned char * __cdecl getMACAddress(unsigned char * const)" (?getMACAddress@@YAPAEQAE@Z)
此错误似乎很常见,但以下解决方案均不适合我:
这一切都行不通。事实上,我不确定应该包含哪些 lib 文件?如何决定?
我还在其他库目录下包含“C:\Program Files\DCMTK\lib”,在项目属性的其他包含目录下包含“C:\Program Files\DCMTK\include”。
- stackoverflow 上的另一个类似问题尚未得到解答。评论建议通过禁用 DCMTK_OVERWRITE_WIN32_COMPILER_FLAGS 重新运行 CMake。我没有这样做是因为DCMTK 帮助页面说不要禁用它,除非你真的知道你在做什么。
有人可以指导吗?