NDK OpenGL undefined reference to glVertexPointer

匿名 (未验证) 提交于 2019-12-03 08:59:04

问题:

When compiling the following C code with ndk-build in Terminal (I'm running Ubuntu):

#include <jni.h>  #include <GLES/gl.h> #include <GLES/glext.h>  #include "org_opengldrawinjni_DrawinJNI.h"   JNIEXPORT void JNICALL Java_org_opengldrawinjni_DrawinJNI_Draw   (JNIEnv *envptr, jobject jobj) {  GLfloat vertices[] =   { 1.0, 0.0, 0.0,     1.0, 1.0, 0.0,     0.0, 0.0, 0.0   };  GLubyte indices[] = { 0, 1, 2 };  glVertexPointer(3, GL_FLOAT, 0, vertices);  glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_BYTE, indices); } 

with this Android.mk file:

   LOCAL_PATH := $(call my-dir)     include $(CLEAR_VARS)     LOCAL_MODULE    := OpenGLJNI    LOCAL_SRC_FILES := org_opengldrawinjni_DrawinJNI.c    LOCAL_LDLIBS := -llog -lGLESv1_CM.so     include $(BUILD_SHARED_LIBRARY) 

I get an error, undefined reference to glVertexPointer. I'm wondering why because I believe I properly included the headers and linked up the libraries in the Android.mk

/home/thomas/Documents/LinuxProgramming/EclipseWorkspace/OpenGLDrawinginJNI/obj/local/armeabi/objs/OpenGLJNI/org_opengldrawinjni_DrawinJNI.o: In function `Java_org_opengldrawinjni_DrawinJNI_Draw': /home/thomas/Documents/LinuxProgramming/EclipseWorkspace/OpenGLDrawinginJNI/jni/org_opengldrawinjni_DrawinJNI.c:33: undefined reference to `glVertexPointer' collect2: ld returned 1 exit status make: *** [/home/thomas/Documents/LinuxProgramming/EclipseWorkspace/OpenGLDrawinginJNI/obj/local/armeabi/libOpenGLJNI.so] Error 1 

Thanks!

回答1:

I can't think of anything wrong but when I checked my make file there is one difference. Since I'm not good with compilers I don't know if it is relevant:

LOCAL_LDLIBS := -lGLESv1_CM -ldl -llog

Dynamic Linker Library:

is available and can be used to use the dlopen()/dlsym()/dlclose() functions provided by the Android dynamic linker. You will need to link against /system/lib/libdl.so with:

LOCAL_LDLIBS := -ldl

Hope it helps



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!