質問

JVMTIでは、Javaアプリケーションをプロファイルするエージェントを開発しています。したがって、共有ライブラリLibagent.SOがコンパイルされています。さらに、QTフレームワークを使用します。

今のところ、これら2つのソースファイルのみで構成されています。agent.cppagentserver.cpp

ただし、共有ライブラリLibagent.soでJavaアプリケーションを開始すると、エラーが発生します。 未定義のシンボル:_ztv11agentserver(./libagent.so)

LDDを実行すると、同じ依存関係の問題が発生します。

ldd -d libagent.so 
linux-vdso.so.1 =>  (0x00007fffeb333000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f8b6731b000)
libm.so.6 => /lib/libm.so.6 (0x00007f8b67098000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f8b66e81000)
libc.so.6 => /lib/libc.so.6 (0x00007f8b66afe000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8b67844000)
undefined symbol: _ZTV11AgentServer (./libagent.so)

現在のコンパイルコマンドは次のとおりです。

g++ $(CXXFLAGS) -fPIC -shared -o libagent.so $(INCPATH) ../src/agent.cpp ../src/agentserver.cpp

ここで、$(cxxflags)は-m64 -pipe -o2 -wall -w -d_reentrant $(定義)です

ここで$(定義)は-dqt_no_debug -dqt_gui_lib -dqt_network_lib -dqt_core_lib -dqt_shared

ここで、$(incather)は-i/home/konrad/qtsdk -2010.05/qt/mkspecs/linux -g ++ -64 -i ../ src -i/home/konrad/qtsdk -20105/qt/include/qtcore -i i /home/konrad/qtsdk-2010.05/qt/include/qtnetwork -i/home/konrad/qtsdk-20105/qt/qtgui -i/home/home/konrad/qtsdk -2010.05/qt/qunting -i/usr/lib /jvm/java-6-openjdk/include -i/usr/lib/jvm/java-6-openjdk/include/linux -i。 -私。 -i ../ src -i。

私はこの問題を調査するためにしばらく時間を費やしましたが、このエラーを解決した人はいませんでした。


これは、agentserver.cppのヘッダーコードです。 agentserver.h

役に立ちましたか?

解決

エラーメッセージは、エージェントサーバーのvtableの要素が未定義であることを伝えています。の用法 Q_OBJECT 実行する必要があります moc ソースに - QTライブラリへのリンク。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top