我正在使用的项目使用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)

最佳答案

这里的问题是未构建QVTKWidget2类。仅在构建OpenGl内容时才构建。由CMAKE标志控制:VTK_USE_QVTK_QTOPENGL(on)
(我真的很讨厌CCMAKE。)

09-08 05:19