c++ - Linux 查找 glxext.h 函数的对象 -> 找不到正确的 .so -> "undefined reference"

标签 c++ opengl

我的应用程序正在使用 glxext.h(例如/usr/include/GL/glxext.h)中的函数,但我似乎没有链接到正确的库。

哪个库/编译单元包含匹配功能?

我已经链接了以下库:

-lopengl -lcuda -lcudart -lGL -lglut -lGLEW -lGLU -lX11 -lXNVCtrl -lXxf86vm -lXi -lXmu -lXext

输出

undefined reference to `glXEnumerateVideoCaptureDevicesNV'
undefined reference to `glXLockVideoCaptureDeviceNV'
undefined reference to `glXBindVideoCaptureDeviceNV'

我想这可能只是找到要链接的正确库的问题。我找到了可能包含正确组件的 LWJGL。

最佳答案

此函数是 GLX_NV_video_capture 的一部分GLX 扩展。如果您尝试与他们链接并收到报告说此功能在 -lGL 中找不到,则很可能意味着您的 GLX 没有此扩展。您可以使用 glxinfo|grep NV_video_capture 命令进行验证。

由于扩展可能会丢失,通常建议首先使用 glXQueryExtensionsString 查询支持的扩展(它将返回支持的 GLX 扩展的空格分隔列表),然后,如果支持您需要的扩展,使用 glXGetProcAddress 获取指向您需要的每个函数的指针。如果您静态链接扩展函数,您的程序将无法在没有此扩展的任何其他实现上运行。

关于c++ - Linux 查找 glxext.h 函数的对象 -> 找不到正确的 .so -> "undefined reference",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26611357/

相关文章:

opengl - OpenGL 是否钳制每个纹理阶段的输出?

c++ - SDL 错误 Visual Studio 2013

c++ - `long unsigned typedef int long ullong;` 是什么意思?

c++ - Axis2C 非官方与 Axis2C 员工

c++ - 为什么 C++ 数组的括号在变量上而不是在数据类型上?

c++ - 2009 年的 OpenGL 窗口库

c++ - 错误 : no match for ‘operator=’

c++ - 为每条记录设置严重性和 channel

OpenGL FrameBuffer 上下颠倒和右下角

c++ - 在 imageStore() 之后为 3D 纹理生成 MipMap 级别