Projemi terminalimde veya Creator'da derlemeye çalışırken, Ubuntu altında VTK 7.1 ve Qt 5.5.1 kullanarak basit bir DICOM görüntüleyicisi geliştirmeye çalışıyorum. birkaç tanımsız başvuru hataları ... devreye giriyorQt ve VTK kullanarak bir DICOM dosyasını görüntülemeye çalışırken tanımlanmamış referans sorunu
Sonuç:
Bu durumda benim proje için ilgili kod şuna benzerlibDigitalImagingLib.so : undefined reference to 'vtkRenderingVolumeOpenGL2_AutoInit_Construct()'
libDigitalImagingLib.so : undefined reference to 'vtkRenderingVolumeOpenGL2_AutoInit_Construct()'
libDigitalImagingLib.so : undefined reference to 'vtkImageViewer2::New()'
...
CMakeLists.txt
CMAKE_MINIMUM_REQUIRED (VERSION 2.8)
PROJECT (DigitalImaging)
FIND_PACKAGE (VTK)
INCLUDE (${VTK_USE_FILE})
FIND_PACKAGE (Qt5Widgets)
SET (DigitalImagingLib_src ${PROJECT_SOURCE_DIR}/mainwindow.cpp)
SET (DigitalImagingLib_hdr ${PROJECT_SOURCE_DIR}/mainwindow.h)
SET (DigitalImagingLib_ui ${PROJECT_SOURCE_DIR}/mainwindow.ui)
SET (DigitalImagingBin_src ${PROJECT_SOURCE_DIR}/main.cxx)
qt5_wrap_cpp(DigitalImagingLib_hdr_moc ${DigitalImagingLib_hdr})
qt5_wrap_ui(DigitalImagingLib_ui_moc ${DigitalImagingLib_ui})
include_directories (${PROJECT_SOURCE_DIR})
include_directories (${PROJECT_BINARY_DIR})
add_library (DigitalImagingLib SHARED
${DigitalImagingLib_src}
${DigitalImagingLib_hdr_moc}
${DigitalImagingLib_ui_moc}
)
target_link_libraries (DigitalImagingLib Qt5::Widgets)
ADD_EXECUTABLE(DigitalImaging
${DigitalImagingBin_src}
)
TARGET_LINK_LIBRARIES (DigitalImaging
${VTK_LIBRARIES}
DigitalImagingLib
)
mainwindow.cpp: CMake en iyi kodlama uygulamaları konusunda herhangi yardım türünü ve ipuçları takdir gerçekten edecek bir acemi olarak
# include "mainwindow.h"
# include "ui_mainwindow.h"
# include <vtkSmartPointer.h>
# include <vtkImageViewer2.h>
# include <vtkDICOMImageReader.h>
# include <vtkRenderWindow.h>
# include <vtkRenderWindowInteractor.h>
# include <vtkRenderer.h>
# include <QVTKWidget.h>
...
void MainWindow::displayDICOM(std::string file) {
vtkSmartPointer<vtkDICOMImageReader> reader = vtkSmartPointer<vtkDICOMImageReader>::New();
reader -> SetFileName(file.c_str());
reader -> Update();
vtkSmartPointer<vtkImageViewer2> imageViewer = vtkSmartPointer<vtkImageViewer2>::New();
imageViewer -> SetInputConnection(reader -> GetOutputPort());
imageViewer -> SetRenderWindow(ui -> vtkRenderer -> GetRenderWindow());
imageViewer -> Render();
}
...
! Belki de herhangi bir kayda değer başarı olmadan aşağıdakileri uygulamaya çalışmıştır söz etmek gerekiyor
# include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2)
CMakeLists.txt dosyasını yeniden ziyaret ettikten sonra önerinizi ve eksik özniteliklerini buldum :) önerinizi gerçekten takdir ediyorum :) – Nimzaj