gpt4 book ai didi

c++ - 如何使用外部库中的函数?

转载 作者:行者123 更新时间:2023-11-28 03:21:37 25 4
gpt4 key购买 nike

我正在通过 glc-capture 启动 OpenGL 应用程序。 glc 是一个 c 库,它 Hook 在 OpenGL 缓冲区和 x11 服务器上。glc 需要 OpenGL 显示中的一个键命令来开始记录 OpenGL 输出。

但我的软件应该开始以编程方式记录输出,而不是通过按键。glc 文件太复杂了,我的基础知识无法完全理解它们。但基本上结构似乎如下:

glc-capture是一个 shell 脚本,它进行一些设置并执行 LD_PRELOAD=libglc-capture.so "${@}"x11.c包含用于监听关键事件的 x11 Hook 。正在进行一些初始化。在特殊按键事件上,函数 start_capture()x11.c 执行.start_capture() 在文件 lib.h 中定义并在 main.c 中实现文件。

我的问题:如何在我自己的 C++ 应用程序上执行 start_capture() 函数?我尝试通过 CMakeList.txt 链接库( Hook 和捕获)并包含头文件,但这总是让我处于“ undefined reference :start_capture()”。

这是链接库的 CMakeList.txt 行:

target_link_libraries(${PROJECT_NAME} ${QT_LIBRARIES} libglc-hook.so libglc-capture.so libglc-core.so libglc-export.so)

编辑2:这是我在运行时遇到的错误:

/opt/ros/fuerte/stacks/visualization/rviz/bin/rviz: symbol lookup error: /home/jrick/fuerte_workspace/sandbox/Bag2Film/lib/libBag2Film.so: undefined symbol: start_capture

nm 的输出:

jrick@robot2:~/fuerte_workspace/sandbox/Bag2Film/lib$ nm libBag2Film.so | grep capture

0000000000003a30 t start_capture

0000000000003790 t stop_capture

最佳答案

我不知道 glc-capture,但根据你所说的,应该可以将你的应用程序直接链接到 libglc-capture(尝试将 -lglc-capture 作为链接器标志传递) .如果不起作用,请查阅库文档。

此外,您还必须包含一个包含 start_capture 声明的头文件。同样,请查阅库文档以了解要使用的文件。如果不存在 header ,您仍然可以自己声明它(听起来像 C 库,所以 extern "C"{ void start_capture(); } 可能会这样做。

如果您的项目在这些更改后仍然可以编译和链接,请在需要的地方添加对 start_capture() 的调用。

如果没有帮助,请返回这里。

关于c++ - 如何使用外部库中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15271426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com