JVMTIでJavaアプリケーションのプロファイルを作成するエージェントを開発中です。したがって、共有ライブラリlibagent.soがコンパイルされます。さらに私は、Qtフレームワークを使用します。g ++で共有ライブラリの未定義のシンボル
今ではこれら2つのソースファイルだけで構成されていの場合: agent.cppとagentserver.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
私はagentserver.cppのソースコードに見られるように、ヘッダファイル内のコンストラクタのみを宣言して実装しました:6-9 –
@platzhirsch:ヘッダファイルを投稿してください – Erik
@Erik: –