문제

I'm UNSUCCESSFULLY trying to build the Qt + VTK examples included in VTK's 5.6.1 distribution (.../VTK/Examples/GUI/Qt/). Here's what I'm using: - VTK distribution: 5.6.1 - Qt IDE: Qt creator 2.7.1 (based on Qt 4.7.0) - Mac OS X version: 10.6.6

Also in the .pro project file on Qt I've included my vtk headers and lib directories:

INCLUDEPATH += /Users/catamigue/Documents/Migue/Developer/bin/vtk561/include/vtk-5.6
LIBS += -L/Users/catamigue/Documents/Migue/Developer/bin/vtk561Dyn/lib/vtk-5.6

Regardless of the example I'm trying to build (Events, GraphicView, ImageViewer or SimpleView), after trying to build the project on Qt creator I always get the same error (in "Build issues" tab on Qt Creator):

:: error: symbol(s) not found
:: error: collect2: ld returned 1 exit status

also from the "compile output" tab I get this after building:

ld: warning: directory '/tmp/qt-stuff-6474/source/qt-everywhere-opensource-src-4.7.0/lib' following -L not found
ld: warning: directory '/tmp/qt-stuff-6474/source/qt-everywhere-opensource-src-4.7.0/lib' following -F not found
Undefined symbols:
"vtkSmartPointerBase::~vtkSmartPointerBase()", referenced from:
vtkSmartPointer::~vtkSmartPointer()in simpleview.o
vtkSmartPointer::~vtkSmartPointer()in simpleview.o
vtkSmartPointer::~vtkSmartPointer()in simpleview.o
vtkSmartPointer::~vtkSmartPointer()in simpleview.o
vtkSmartPointer::~vtkSmartPointer()in simpleview.o
"vtkAlgorithm::GetOutputPort(int)", referenced from:
vtkAlgorithm::GetOutputPort() in simpleview.o
"vtkActor::New()", referenced from:
vtkSmartPointer::New() in simpleview.o
"vtkSphereSource::New()", referenced from:
vtkSmartPointer::New() in simpleview.o
"QVTKWidget::QVTKWidget(QWidget*, QFlags)", referenced from:
Ui_SimpleView::setupUi(QMainWindow*) in simpleview.o
Ui_SimpleView::setupUi(QMainWindow*) in simpleview.o
"vtkRenderer::AddActor(vtkProp*)", referenced from:
SimpleView::SimpleView()in simpleview.o
SimpleView::SimpleView()in simpleview.o
SimpleView::SimpleView()in simpleview.o
SimpleView::SimpleView()in simpleview.o
"vtkCubeSource::New()", referenced from:
vtkSmartPointer::New() in simpleview.o
"vtkPolyDataMapper::New()", referenced from:
vtkSmartPointer::New() in simpleview.o
"vtkSmartPointerBase::vtkSmartPointerBase(vtkObjectBase*, vtkSmartPointerBase::NoReference const&)", referenced from:
vtkSmartPointer::vtkSmartPointer(vtkSphereSource*, vtkSmartPointerBase::NoReference const&)in simpleview.o
vtkSmartPointer::vtkSmartPointer(vtkCubeSource*, vtkSmartPointerBase::NoReference const&)in simpleview.o
vtkSmartPointer::vtkSmartPointer(vtkPolyDataMapper*, vtkSmartPointerBase::NoReference const&)in simpleview.o
vtkSmartPointer::vtkSmartPointer(vtkActor*, vtkSmartPointerBase::NoReference const&)in simpleview.o
vtkSmartPointer::vtkSmartPointer(vtkRenderer*, vtkSmartPointerBase::NoReference const&)in simpleview.o
"vtkRenderer::New()", referenced from:
vtkSmartPointer::New() in simpleview.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: [01SimpleView.app/Contents/MacOS/01SimpleView] Error 1*
make: Leaving directory `/Users/catamigue/Documents/Migue/Polimi/Programming/Qt/Learning code/Qt + VTK + ITK/01SimpleView-build-desktop'
The process "/usr/bin/make" exited with code %2. *Error while building project 01SimpleView (target: Desktop)* When executing build step 'Make'

from what I've read in other forums this might be an error during linking... and I don't know what to do!... Please, some guidance will be really appreciated...

Also some additional information of how vtk5.6.1 was built on my Mac:
- CMake version: 2.8.1.
- CMake parameters (using CMake interface, not command line):

BUILD_EXAMPLES = OFF
BUILD_SHARED_LIBS = OFF
BUILD_TESTING = OFF
CMAKE_BUILD_TYPE = Release
CMAKE_OSX_ARCHITECTURE = x86_64
VTK_USE_GUI_SUPPORT = ON
VTK_USE_QT = ON

I've also tried by recompiling VTK with universal binaries (by changing CMAKE_OSX_ARCHITECTURE) and by building the projects in Qt Creator both in Debug and Release modes... And nothing!

I've also successfully built all of the Qt examples (not including VTK)...

Any comments?

Thanks, Miguel

도움이 되었습니까?

해결책

I'm not a VTK guru but from what you posted:

warning

'/tmp/qt-stuff-6474/source/qt-everywhere-opensource-src-4.7.0/lib' following -L not found

is self explanatory. All other errors look like consequence of the one above.

What you could try doing:

  1. Check if VTK was compiled\installed with QT support. For example you can try compiling

    /your_vtk_folder/Examples/GUI/Qt/SimpleView/

    using cmake. If you have QT and VTK compiled and installed correctly you shouldn't have any problems doing this.

  2. Next double check where vtk include files and libraries were installed. On my machine folders are:

    headers: /usr/local/include/vtk-5.6

    libs: /usr/local/lib/vtk-5.6/

  3. In your *.pro file you can add following:

    INCLUDEPATH += /usr/local/include/vtk-5.6

    LIBS += -L/usr/local/lib/vtk-5.6/ -lvtkCommon -lvtksys -lQVTK ... all vtk libs needed for your projects

hope this helps, regards

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top