我正在使用的项目,使用VTK(版本5.8.0),c ++ 4.6.3,buntu 12.04
代码编译没有任何错误。链接器失败:未定义引用QVTKWidget2 :: QVTKWidget2(QWidget *,QGLWidget const *,QFlags)
这个类在VTK/GUISupport/Qt/QVTKWidget2.cxx
据我所知,这是在 libQVTK.a (grep -i -l QVTKWidget2 *.a
)或 libQVTK.so , libQVTKWidgetPlugin.so (grep -i -l QVTKWidget2 *.so
)但我不确定文本搜索是否足以说明引用/符号存在。我不确定链接器正在寻找什么
当我试图找到符号w / nm -A *.a|grep QVTKWidget2
时,五个回答对我来说太难以理解了。 (我不确定该找什么。)
当我查看.so文件(ldd libQVTK.so
)时,我看到了对不同库的引用,并没有提到QVTKWidget2。 (进一步混淆。)
链接器cmd为/usr/bin/c++
使用/full/path/to/VTK/build/bin/libQVTK.a
编辑1:
在这种情况下,简单的文本搜索不够好。 grep -i -l QVTKWidget2 *.a
将标记 libQVTK.a 当仔细查看存档ar -t libQVTKA.a
时,此lib包含 QVTKWidget.cxx.o 没有提及 QVTKWidget2.cxx.o 。我猜这是由于名称错误,或仅仅是归档格式。
编辑2:
nm -C libQVTK.a | grep QVTKWidget2
什么都不返回。 nm -C libQVTK.a |grep QVTKWidget
表示此存档中只有QVTKWidget类成员。 nm -C libQVTK.so | grep QVTKWidget2
,再次不返回任何内容,而nm -C libQVTK.so | grep QVTKWidget
仅显示QVTKWidget类成员。 libQVTKWidgetPlugin.so 的结果相同。再次,由于名称重整,文本搜索会产生误导。
有没有快速的方法找出哪个库有QVTKWidget2类? (QVTKWidget2.cxx.o)
答案 0 :(得分:1)
这里的问题是没有构建QVTKWidget2类。它仅在构建OpenGl内容时构建。由CMAKE标志控制:VTK_USE_QVTK_QTOPENGL(on)
(我真的很讨厌CCMAKE。)