g ++を使用してプロジェクト(実行可能なmono_kitti)をリンクしています。私のプロジェクトはthirdpartyライブラリPangolinに依存しています。動的ファイルへのリンクと入力オブジェクトとの違いは何ですか?
mono_kitti.o:(.data+0x0): undefined reference to `vtable for pangolin::Handler'
mono_kitti.o:(.data+0x8): undefined reference to `vtable for pangolin::HandlerScroll'
mono_kitti.o: In function `pangolin::Handler::~Handler()':
mono_kitti.cc:(.text._ZN8pangolin7HandlerD2Ev[_ZN8pangolin7HandlerD5Ev]+0x13): undefined reference to `vtable for pangolin::Handler'
mono_kitti.o: In function `pangolin::HandlerScroll::~HandlerScroll()':
mono_kitti.cc:(.text._ZN8pangolin13HandlerScrollD2Ev[_ZN8pangolin13HandlerScrollD5Ev]+0x13): undefined reference to `vtable for pangolin::HandlerScroll'
collect2: error: ld returned 1 exit status
をしかし、私はこのコマンドを使用する場合:
g++ -L../../lib -lORB_SLAM2 -lpangolin mono_kitti.o -o mono_kitti
それが返されます。
g++ -L../../lib -lORB_SLAM2 mono_kitti.o /usr/local/lib/libpangolin.so -o mono_kitti
はそれが成功した私は-lpangolinオプションとのリンクアクションを行うと。
しかし、それは私が彼らの順序を入れ替えるしようとしたときに再び失敗しました:
g++ -L../../lib -lORB_SLAM2 /usr/local/lib/libpangolin.so mono_kitti.o -o mono_kitti
をして(-lpangolinオプション)上記の最初のケースと同じものを返します。
私は、これらの結果については非常に困惑している、誰かがそれらの間differeceを説明できるだろうか?どうもありがとう!
注文事項は、コマンドラインで後* *オブジェクトファイルをライブラリを置きます。 –