Member 13292468 Ответов: 1

Я попытался настроить библиотеку DCMTK в linux-машине, но при сборке приложения получал следующие ошибки....


ошибка: неопределенная ссылка на ' DcmFileFormat:: DcmFileFormat()'
ошибка: неопределенная ссылка на ' DcmFileFormat:: loadFile(OFFilename const&, E_TransferSyntax, E_GrpLenEncoding, unsigned long, E_FileReadMode)'
ошибка: неопределенная ссылка на `DcmItem::findAndGetString(DcmTagKey как const&амп;, const чарса*&амп;, типа bool)'
ошибка: неопределенная ссылка на `DcmItem::findAndGetString(DcmTagKey как const&амп;, const чарса*&амп;, типа bool)'
ошибка: неопределенная ссылка на `DcmItem::findAndGetString(DcmTagKey как const&амп;, const чарса*&амп;, типа bool)'
ошибка: неопределенная ссылка на 'DcmDataset:: getCurrentXfer() const'
ошибка: неопределенная ссылка на ' DcmXfer:: DcmXfer(E_TransferSyntax)'
ошибка: неопределенная ссылка на ' DcmXfer::~DcmXfer()'
ошибка: неопределенная ссылка на ' DcmFileFormat::~DcmFileFormat()'
ошибка: неопределенная ссылка на ' DcmXfer::~DcmXfer()'
ошибка: неопределенная ссылка на ' DcmFileFormat::~DcmFileFormat()'
ошибка: collect2: ошибка: ld вернул 1 статус выхода

Что я уже пробовал:

Я добавил статическую библиотеку DCMTK и включил путь в QT и попытался построить, но получил ошибки.

пожалуйста помочь...

1 Ответов

Рейтинг:
2

Jochen Arndt

Ошибка "неопределенная ссылка" указывает на то, что вы не связали свое приложение с библиотекой, содержащей соответствующие функции.

Вы должны добавить путь и имя библиотеки в файл проекта Qt с помощью LIBS переменная. Там вы можете указать дополнительные пути с помощью -L и имена библиотек с -l (путь включения не используется для библиотек):

LIBS += -L<path-to-DCMTK-libraries = DCMTK_INSTALL_LIBDIR> -l<library-name>
Пример для динамической библиотеки:
LIBS += -L/usr/local/dcmtk12 -ldcmtk12_3.6.2
Пример для статической библиотеки:
LIBS += -L/usr/local/dcmtk12 -llibdcmtk12_3.6.2.a


Member 13292468

Я связываю статическую библиотеку следующим образом, правильно ли это? Если это так, то я все еще получаю те же ошибки, поправьте меня, если я ошибаюсь

в Unix:!сайт MacX: каталог libs += -л$$и pwd/../DicomViewer/Dicom_Linux_Static_libraries/DICOM в каталоге/lib/ -lofstd

INCLUDEPATH += $$PWD / .. / DicomViewer/Dicom_Linux_Static_libraries/dicom/include
DEPENDPATH += $$PWD / ../DicomViewer/Dicom_Linux_Static_libraries/dicom / include

в Unix:!сайт MacX: PRE_TARGETDEPS += $$pwd для/../DicomViewer/Dicom_Linux_Static_libraries/DICOM в каталоге/lib/libofstd.а

Jochen Arndt

Смотрите мои примеры. Для статических библиотек необходимо указать полное имя (с префиксом " lib "и расширением". a"). Ваш код попытается связаться с динамической библиотекой libofstd.so.

Так что это должно быть "- llibofstd. a".

До сих пор я не использовал DCMTK. Поэтому вы также должны проверить, содержатся ли функции из сообщений об ошибках в libofstd или втянуты. Возможно, потребуется также установить связь с другими библиотеками.