Отменить определение символов vtkImageViewer2::New(), QT-VTK Mac OSX 10.6.8

Я использую VTK для чтения серии DICOM. Я могу скомпилировать (используя CMake) пример кода VTK, и он работает хорошо. Теперь я пытаюсь использовать Qtcreator и Qt4.8.5 для создания графического интерфейса. Я связал библиотеку и указал путь к project.pro.

Когда я строю, я получаю:

Undefined symbols:
  "vtkImageViewer2::New()", referenced from:
     vtkSmartPointer<vtkImageViewer2>::New()        in mainwindow.o
ld: symbol(s) not found

Я проверил путь Include, и он включает /usr/local/vtk-6.1/include/vtk-6.1/, который содержит vtkImageViewer2.h.

Что не так с моим проектом?


person Nicolaus    schedule 20.05.2014    source источник


Ответы (2)


Это ошибка компоновщика, поэтому ваш проект действительно правильно находит vtkImageViewer2.h. Вы должны использовать CMake для создания своего проекта, тогда вы можете просто сделать

find_package(VTK REQUIRED)
include(${VTK_USE_FILE})

и обо всех связях VTK позаботятся за вас.

person David Doria    schedule 20.05.2014
comment
спасибо за редактирование, я собираюсь скомпилировать его с помощью cmake .. в любом случае, есть ли какое-либо решение, чтобы я мог использовать qt для компиляции программы? Я следил за руководством по отображению серии DICOM ЗДЕСЬ ССЫЛКА моя версия vtk может быть проблемой для связывания? - person Nicolaus; 26.05.2014
comment
CMake ничего не компилирует, он просто создает проект (это может быть Visual Studio, Eclipse и т.д.). В вашем случае создание проекта по умолчанию, проекта Unix, создаст стандартные файлы Make, которые можно использовать для компиляции с помощью make из терминала. Однако лучше этого то, что вы можете просто открыть файл CMakeLists.txt из QtCreator, и он создаст для вас проект QtCreator. Это процесс, который я обычно использую в своей работе. Чтобы ответить на ваш вопрос, я не думаю, что это проблема версии VTK, но использование такого CMake определенно должно предотвратить эту проблему. - person David Doria; 27.05.2014
comment
спасибо, что поделились Дэвидом, это очень полезно, теперь я использую cmake для создания проекта - person Nicolaus; 29.05.2014

В качестве дополнения к ответу Дэвида не забудьте добавить ${VTK_LIBRARIES} (определяется файлом использования VTK) в вашу библиотеку или двоичный/исполняемый файл:

TARGET_LINK_LIBRARIES(myLib ${VTK_LIBRARIES})

и пути к библиотекам как:

link_directories(${VTK_LIBRARY_DIRS})
person shakes76    schedule 11.10.2014