我正在通过 glc-capture 启动一个 OpenGL 应用程序。glc 是一个 c 库,它挂接在 OpenGL 缓冲区和 x11 服务器上。glc 需要 OpenGL 显示中的一个键命令来开始记录 OpenGL 输出。
但是我的软件应该开始以编程方式记录输出,而不是通过按键。glc 文件太复杂了,我的基本知识无法完全理解它们。但基本上结构似乎如下:
glc-capture是一个 shell 脚本,它进行一些设置并执行LD_PRELOAD=libglc-capture.so "${@}"
. x11.c包含监听关键事件的 x11 钩子。正在进行一些初始化。在特殊键事件上,该函数start_capture()
由x11.c执行。
start_capture()
在文件lib.h中定义并在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