glc-captureを介してOpenGLアプリケーションを開始しています。glcは、OpenGLバッファーとx11サーバーをフックするcライブラリです。glcは、OpenGL出力の記録を開始するために、OpenGLディスプレイにキーコマンドが必要です。
しかし、私のソフトウェアは、キーを押すのではなく、プログラムで出力の記録を開始する必要があります。glcファイルはすべて複雑すぎて、私の基本的な知識では完全に理解できません。しかし、基本的に構造は次のようです。
glc -captureは、いくつかの設定を行い、を実行するシェルスクリプトLD_PRELOAD=libglc-capture.so "${@}"
です。x11.cには、主要なイベントをリッスンするx11フックが含まれています。いくつかの初期化が行われています。特別なキーイベントでは、関数start_capture()
はx11.cによって実行されます。
ファイルlib.hstart_capture()
で定義され、 main.cファイルに実装されます。
私の質問:自分のc ++アプリケーションでstart_capture()関数を実行するにはどうすればよいですか?
ヘッダーファイルを介してライブラリ(フックとキャプチャ)をリンクしてCMakeList.txt
インクルードしようとしましたが、常に「未定義の参照:start_capture()」のままになります。
ライブラリをリンクするCMakeList.txtの行は次のとおりです。
target_link_libraries(${PROJECT_NAME} ${QT_LIBRARIES} libglc-hook.so libglc-capture.so libglc-core.so libglc-export.so)
EDIT2:実行時に発生するエラーは次のとおりです。
/opt/ros/fuerte/stacks/visualization/rviz/bin/rviz:シンボルルックアップエラー:/home/jrick/fuerte_workspace/sandbox/Bag2Film/lib/libBag2Film.so:未定義のシンボル:start_capture
nmからの出力:
jrick @ robot2:〜/ fuerte_workspace / sandbox / Bag2Film / lib $ nm libBag2Film.so | grepキャプチャ
0000000000003a30 t start_capture
0000000000003790 t stop_capture