[英]Linking compute shader
我尝试编译这个小例子 ,执行make时遇到此错误:
g++ -o ogl_cs_example main.cpp opengl_cs.cpp opengl_util.cpp -Wall -Iinclude -lX11 -lGL -lGLU
/tmp/ccFLIOt2.o: In function `updateTex(int)':
main.cpp:(.text+0xc6): undefined reference to `glDispatchCompute'
/tmp/ccQ8pShN.o: In function `genTexture()':
opengl_util.cpp:(.text+0x3df): undefined reference to `glBindImageTexture'
/tmp/ccQ8pShN.o: In function `initGL()':
opengl_util.cpp:(.text+0x7dd): undefined reference to `glXCreateContextAttribsARB'
collect2: error: ld returned 1 exit status
make: *** [example] Error 1
我想念什么?
这些功能都是平台的最小实现未提供的所有OpenGL / GLX扩展。
您必须在运行时使用glXGetProcAddress (...)
加载它们,它们不包含在您直接链接到的任何库中。 尽管您可以链接到诸如GLEW之类的扩展管理库来为您完成繁琐的工作,但是您仍然要做的不只是添加新的链接依赖项。
创建OpenGL渲染上下文后,通常必须初始化所述库。 值得指出的是,使WGL(Windows)和GLX(X11)脱颖而出的一件事是,您无需先创建GL上下文即可加载GLX的扩展,因此您实际上可以先加载glXCreateContextAttribsARB
, glDispatchCompute
和glBindImageTexture
你有一个背景。 但是,您获得的后两个函数指针在运行时是否会做任何事情是另一回事,并且取决于您创建的上下文的功能。
未定义的引用意味着您没有链接到库
您忘记了链接。 如果使用的是GLEW,请确保链接到glew32.lib(或libglew32.a或适用于您系统的任何文件)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.