2011-03-20 22 views
0

JVMTIでJavaアプリケーションのプロファイルを作成するエージェントを開発中です。したがって、共有ライブラリlibagent.soがコンパイルされます。さらに私は、Qtフレームワークを使用します。g ++で共有ライブラリの未定義のシンボル

今ではこれら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 $である(DEFINES)

$(DEFINES)は-DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED

どこ$(INCPATH)である-I /ホーム/コンラート/ qtsdk-2010.05/QT/mkspecs/linuxの-G ++ - 64 -I ../ SRC -I /ホーム/コンラート/ qtsdk -2010.05/qt/include/QtCore -I/home/konrad/qtsdk-2010.05/qt/include/QtNetwork -I/home/konrad/qtsdk-2010.05/qt/include/QtGui -I/home/konrad/qtsdk-2010.05/qt/include -I/usr/lib/jvm/java-6-openjdk /インクルード-I/usr/lib/jvm/java-6-openjdk/in clude/linux -I。 -私。 -I ../ src -I。

私はこの問題の調査に時間を割いていますが、このエラーは解決しませんでした。


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

答えて

1

エラーメッセージがて、AgentServerのvtableの中にいくつかの要素が未定義であることを語っています。 Q_OBJECTを使用する場合は、ソース上でmocを実行し、qtライブラリにリンクする必要があります。

+0

私はagentserver.cppのソースコードに見られるように、ヘッダファイル内のコンストラクタのみを宣言して実装しました:6-9 –

+0

@platzhirsch:ヘッダファイルを投稿してください – Erik

+0

@Erik: –

関連する問題