Ошибка компоновщика LNK2019 при использовании DCMTK с Visual Studio

Это не новый вопрос, но решения для меня не сработали. Я хочу читать файлы dicom, используя C ++. У меня 32-битный ПК с Windows и VS 2013 Community Edition.

Эта почта и другие ответы там предложили использовать 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)

Эта ошибка кажется распространенной, но ни одно из следующих решений не работает для меня:

  1. FAQ # 27 а также другой пост форума DCMTK: Предлагается использовать определенный порядок файлов lib для включения. Мой порядок включения файлов следующий (я пробовал и обратный порядок, но он не работал):

    введите описание изображения здесь

Все это не работает. На самом деле, я не уверен, какие файлы lib должны быть включены? Как решить это?

Я также включил «C: \ Program Files \ DCMTK \ lib» в дополнительные каталоги библиотеки и «C: \ Program Files \ DCMTK \ include» в дополнительные каталоги включения в свойствах проекта.

  1. Еще один похожий вопрос в стеке потока не было ответа. Комментарии предлагают перезапустить CMake, отключив DCMTK_OVERWRITE_WIN32_COMPILER_FLAGS. Я не делал этого, потому что Страница справки DCMTK говорит, не отключайте это, если вы действительно не знаете, что делаете.

Может кто-нибудь, пожалуйста, руководство?

0

Решение

Функция NetBios находится в NETAPI32.LIB, поэтому вы можете попробовать переместить NetAPI32.lib (который находится в вашем списке) в начало этого списка.

0

Другие решения

Не уверен, какую версию DCMTK вы используете, но для текущего моментального снимка разработки вам нужны следующие стандартные библиотеки (в Windows): «ws2_32 netapi32 wsock32». Эта информация может быть найдена в файлах CMake DCMTK. Кстати, вы, кажется, не используете CMake для своего проекта, верно?

0

Я думаю, что вы неправильно написали dcmsign.lib как dcmsig.lib.

Если изменение не помогает, я бы предложил следующий порядок на основе страницы поддержки, на которую вы ссылались:
NetAPI32.lib
WSock32.lib
ofstd.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

Я думаю, что в этом списке каждая библиотека должна идти после всех библиотек, от которых она зависит.

0

проверьте вашу .lib и vs платформу, если такая же, например lib для x64, тогда ваша vs платформа должна быть x64.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector