Qt 4.7 + Mac OS X 10.6 上的 VTK 5.6.1:链接项目时出错
我没有成功地尝试构建 VTK 5.6.1 发行版中包含的 Qt + VTK 示例(.../VTK/Examples/GUI/Qt/)。这是我正在使用的: - VTK发行版:5.6.1 - Qt IDE:Qt Creator 2.7.1(基于Qt 4.7.0) - Mac OS X 版本:10.6.6
另外,在 Qt 上的 .pro 项目文件中,我还包含了我的 vtk 标头和 lib 目录:
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
无论我尝试构建什么示例(Events、GraphicView、ImageViewer 或 SimpleView ),在尝试在 Qt Creator 上构建项目后,我总是遇到相同的错误(在 Qt Creator 的“构建问题”选项卡中):
:: 错误:找不到符号
:: 错误:collect2: ld 返回 1 退出状态
也来自“编译输出”选项卡,我在构建后得到以下信息:
ld:警告:找不到 -L 之后的目录“/tmp/qt-stuff-6474/source/qt-everywhere-opensource-src-4.7.0/lib”
ld:警告:找不到 -F 之后的目录“/tmp/qt-stuff-6474/source/qt-everywhere-opensource-src-4.7.0/lib”
未定义的符号:
“vtkSmartPointerBase::~vtkSmartPointerBase()”,引用自:
simpleview.o 中的 vtkSmartPointer::~vtkSmartPointer()
simpleview.o 中的 vtkSmartPointer::~vtkSmartPointer()
simpleview.o 中的 vtkSmartPointer::~vtkSmartPointer()
simpleview.o 中的 vtkSmartPointer::~vtkSmartPointer()
simpleview.o 中的 vtkSmartPointer::~vtkSmartPointer()
“vtkAlgorithm::GetOutputPort(int)”,引用自:
simpleview.o 中的 vtkAlgorithm::GetOutputPort()
“vtkActor::New()”,引用自:
simpleview.o 中的 vtkSmartPointer::New()
“vtkSphereSource::New()”,引用自:
simpleview.o 中的 vtkSmartPointer::New()
“QVTKWidget::QVTKWidget(QWidget*, QFlags)”,引用自:
simpleview.o 中的 Ui_SimpleView::setupUi(QMainWindow*)
simpleview.o 中的 Ui_SimpleView::setupUi(QMainWindow*)
“vtkRenderer::AddActor(vtkProp*)”,引用自:
simpleview.o 中的 SimpleView::SimpleView()
simpleview.o 中的 SimpleView::SimpleView()
simpleview.o 中的 SimpleView::SimpleView()
simpleview.o 中的 SimpleView::SimpleView()
“vtkCubeSource::New()”,引用自:
simpleview.o 中的 vtkSmartPointer::New()
“vtkPolyDataMapper::New()”,引用自:
simpleview.o 中的 vtkSmartPointer::New()
“vtkSmartPointerBase::vtkSmartPointerBase(vtkObjectBase*, vtkSmartPointerBase::NoReference const&)”,引用自:
simpleview.o 中的 vtkSmartPointer::vtkSmartPointer(vtkSphereSource*, vtkSmartPointerBase::NoReference const&)
simpleview.o 中的 vtkSmartPointer::vtkSmartPointer(vtkCubeSource*, vtkSmartPointerBase::NoReference const&)
simpleview.o 中的 vtkSmartPointer::vtkSmartPointer(vtkPolyDataMapper*, vtkSmartPointerBase::NoReference const&)
simpleview.o 中的 vtkSmartPointer::vtkSmartPointer(vtkActor*, vtkSmartPointerBase::NoReference const&)
simpleview.o 中的 vtkSmartPointer::vtkSmartPointer(vtkRenderer*, vtkSmartPointerBase::NoReference const&)
“vtkRenderer::New()”,引用自:
simpleview.o 中的 vtkSmartPointer::New()
ld:未找到符号
collect2: ld 返回 1 退出状态
make: [01SimpleView.app/Contents/MacOS/01SimpleView] 错误 1*
make:离开目录`/Users/catamigue/Documents/Migue/Polimi/Programming/Qt/Learning code/Qt + VTK + ITK/01SimpleView-build-desktop'
进程“/usr/bin/make”退出,代码为 %2。 *构建项目 01SimpleView 时出错(目标:桌面)* 执行构建步骤“Make”时
,这可能是链接期间的错误...并且我不知道该怎么做!...请提供一些指导我们将非常感激...
还有一些关于如何在我的 Mac 上构建 vtk5.6.1 的附加信息:
- CMake版本:2.8.1。
- CMake参数(使用CMake界面,而不是命令行):
BUILD_EXAMPLES = 关闭
BUILD_SHARED_LIBS = 关闭
BUILD_TESTING = 关闭
CMAKE_BUILD_TYPE = 发布
CMAKE_OSX_ARCHITECTURE = x86_64
VTK_USE_GUI_SUPPORT = 开
VTK_USE_QT = 开
我还尝试过使用通用二进制文件重新编译VTK(通过更改CMAKE_OSX_ARCHITECTURE)并在Qt Creator中以调试和发布模式构建项目......但什么也没有!
我还成功构建了所有 Qt 示例(不包括 VTK)...
有什么意见吗?
谢谢, 米格尔
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不是 VTK 专家,但从你发布的内容来看:
警告
是不言自明的。所有其他错误看起来都像是上述错误的结果。
您可以尝试执行的操作:
检查 VTK 是否已编译\安装并支持 QT。例如你可以尝试编译
<块引用>
/your_vtk_folder/示例/GUI/Qt/SimpleView/
使用cmake。如果您正确编译并安装了 QT 和 VTK,那么执行此操作应该不会有任何问题。
接下来仔细检查 vtk 包含文件和库的安装位置。在我的机器上文件夹是:
标头:/usr/local/include/vtk-5.6
libs: /usr/local/lib/vtk-5.6/
在您的 *.pro 文件中,您可以添加以下内容:
INCLUDEPATH += /usr/local/include/vtk-5.6
LIBS += -L/usr/local/lib/vtk-5.6/ -lvtkCommon -lvtksys -lQVTK ...项目所需的所有 vtk 库
希望这有帮助,问候
I'm not a VTK guru but from what you posted:
warning
is self explanatory. All other errors look like consequence of the one above.
What you could try doing:
Check if VTK was compiled\installed with QT support. For example you can try compiling
using cmake. If you have QT and VTK compiled and installed correctly you shouldn't have any problems doing this.
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/
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