我的应用程序正在使用 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/