这是一个编译问题,特别是在使用NDK引用共享库时。
我的SDL2 + GLEW程序在我的mac上正常运行(显然有不同的makefile / build系统),我在Android上运行正常(只要我不使用GLEW)。但是现在我需要使用GLEW,并且无法找到关于如何/在哪里/什么发生的直接参考,包括NDK中的库。
无论如何 - 在我的android-project
文件夹中,我有jni/src/Android.mk
(我认为这是我应该看的地方?)
有LOCAL_SHARED_LIBRARIES := SDL2 SDL2_image
的一行,我认为这是我应该添加GLEW
的神奇变量?但那甚至是什么?这怎么知道GLEW
甚至意味着什么?它应该是-lGLEW
吗? (最后一个问题是修辞 - 我已经尝试了所有这些并且没有任何作用)。我甚至尝试完全评论该行并获得相同的构建错误:
jni/src/src/main.cpp:8:21: fatal error: GL/glew.h: No such file or directory
#include <GL/glew.h>
我几乎完全迷失了...有没有人有任何我可以研究的资源?
另外,作为一个说明,我也更喜欢解释为什么/正在发生什么,因为我确定我会继续包括其他内容。
编辑:
正如Drop在下面指出的那样,这不是一个链接问题 - 编译器需要知道在哪里找到GL/glew.h
。所以我将/usr/local/Cellar/glew/1.12.0/include
添加到LOCAL_C_INCLUDES :=
行,这样就行了。但现在,编译glew.h
- GL/glu.h: No such file or directory
时出错了。
现在,
/usr/local/Cellar/glew/1.12.0/include
行硬编码更通用/更干净/更好的方法让编译器知道GLEW在哪里? glew.h
应该位于更一般的地方吗?brew
作为包裹提供。我一直在四处寻找有关此事的文件,但我觉得我不知道自己不知道什么。您是否可以提供一些见解,我可以在哪些方面出错?关于如何在各种平台上引用包含和库和内容?
答案 0 :(得分:0)
韦尔普。事实证明,没有一种直接的方法可以将GLEW / GLU / GLUT包含在NDK中? (我有一个问号,因为我还不是100%肯定......)。
但是,我找到了问题的解决方案,那就是 - 我不需要GLEW(或GLU,或GLUT等等)!
就像我说的那样,我正在构建OSX 和 android,所以我使用的是OpenGL 2.1 和 OpenGLES2。
我选择这样做是因为我被告知OpenGLES2只是OpenGL2的一个子集,所以我没想到任何问题(只要我没有在OpenGL 2.1中使用任何func)。
我需要GLEW因为我想使用framebuffers(glGenFramebuffers
等...),它只在OpenGL 2.1中作为扩展名存在。一旦我开始工作,我认为我需要在Android上对OpenGLES2进行相同的扩展争论 - 结果我根本就没有!它只是有点开箱即用! (好吧,一旦你让NDK工作,并与OpenGL联系起来,等等等等)。