これは新しい質問ではありませんが、解決策はうまくいきませんでした。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)
このエラーは一般的なようですが、次の解決策はどれもうまくいきません。
FAQ#27およびDCMTK フォーラムの別の投稿: lib ファイルを特定の順序で含めることを提案しています。ファイルを含める順序は次のとおりです(逆の順序も試しましたが、機能しませんでした):
これはすべて機能しません。実際、どの lib ファイルが含まれているのかわかりません。それをどうやって決めるの?
また、追加のライブラリ ディレクトリの下に「C:\Program Files\DCMTK\lib」を含め、プロジェクト プロパティの追加のインクルード ディレクトリの下に「C:\Program Files\DCMTK\include」を含めました。
- stackoverflow での別の同様の質問には回答がありません。コメントは、DCMTK_OVERWRITE_WIN32_COMPILER_FLAGS を無効にして CMake を再実行することを提案しています。DCMTK のヘルプ ページには、自分が何をしているのか本当にわからない限り、これを無効にしないでくださいと書かれているので、私はそれをしませんでした。
誰かが案内してくれますか?