私が作業しているプロジェクトは、VTK(ver 5.8.0)、c ++ 4.6.3、buntu12.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
)しかし、参照/記号がそこにあると言うのにテキスト検索で十分かどうかはわかりません。リンカーが何を探しているのかわかりません。
シンボルを見つけようとするとnm -A *.a|grep QVTKWidget2
、5つの応答がわかりにくくなりすぎて理解できません。(何を探すべきかわかりません。)。
soファイルを見ると(ldd libQVTK.so
)、さまざまなライブラリへの参照があり、QVTKWidget2については言及されていません。(さらに混乱します。)
リンカーcmdは次/usr/bin/c++
のようになります。ライブラリは次のように明示的に呼び出されます。/full/path/to/VTK/build/bin/libQVTK.a
編集1:
この場合、単純なテキスト検索では不十分です。 libQVTK.agrep -i -l QVTKWidget2 *.a
にフラグを立て ます。アーカイブを詳しく見ると、このlibにはQVTKWidget.cxx.oが含まれています。QVTKWidget2.cxx.o についての言及はありません。これは名前マングリング、または単にアーカイブ形式によるものだと思います。 ar -t libQVTKA.a
編集2:
nm -C libQVTK.a | grep QVTKWidget2
何も返しません。 nm -C libQVTK.a |grep QVTKWidget
このアーカイブにはQVTKWidgetクラスのメンバーのみが存在することを示しています。 、 QVTKWidgetクラスのメンバーのみnm -C libQVTK.so | grep QVTKWidget2
を表示しますが、ここでも何も返しません。libQVTKWidgetPlugin.sonm -C libQVTK.so | grep QVTKWidget
の結果は同じです。 ここでも、名前のマングリングが原因で、テキスト検索は誤解を招く可能性があります。
QVTKWidget2クラスを持つライブラリをすばやく見つける方法はありますか?(QVTKWidget2.cxx.o)