本文介绍了NDK的OpenGL未定义参考glVertexPointer的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在编译下面的C code。与NDK的构建在终端(我运行Ubuntu):

 的#include< jni.h>#包括LT&; GLES / gl.h>
#包括LT&; GLES / glext.h>#包括org_opengldrawinjni_DrawinJNI.h
JNIEXPORT无效JNICALL Java_org_opengldrawinjni_DrawinJNI_Draw
  (JNIEnv的* envptr,jobject jobj)
{
 GLfloat顶点[] =
  {1.0,0.0,0.0,
    1.0,1.0,0.0,
    0.0,0.0,0.0
  };
 GLubyte指数[] = {0,1,2};
 glVertexPointer(3,GL_FLOAT,0,顶点);
 glDrawElements(GL_TRIANGLES,3,GL_UNSIGNED_BYTE,索引);
}

本Android.mk文件:

  LOCAL_PATH:= $(叫我-DIR)   包括$(CLEAR_VARS)   LOCAL_MODULE:= OpenGLJNI
   LOCAL_SRC_FILES:= org_opengldrawinjni_DrawinJNI.c
   LOCAL_LDLIBS:= -llog -lGLESv1_CM.so   包括$(BUILD_SHARED_LIBRARY)

我得到一个错误,未定义的引用glVertexPointer。我不知道为什么,因为我相信我适当地包括报头,并在Android.mk拉上库

<$p$p><$c$c>/home/thomas/Documents/LinuxProgramming/EclipseWorkspace/OpenGLDrawinginJNI/obj/local/armeabi/objs/OpenGLJNI/org_opengldrawinjni_DrawinJNI.o:在功能上`Java_org_opengldrawinjni_DrawinJNI_Draw:
/home/thomas/Documents/LinuxProgramming/EclipseWorkspace/OpenGLDrawinginJNI/jni/org_opengldrawinjni_DrawinJNI.c:33:未定义的引用`glVertexPointer
collect2:劳工处返回1退出状态
使:*** [/home/thomas/Documents/LinuxProgramming/EclipseWorkspace/OpenGLDrawinginJNI/obj/local/armeabi/libOpenGLJNI.so]错误1

谢谢!


解决方案

我想不出什么错,但是当我检查了我的make文件有一个区别。
因为我不擅长与编译器,我不知道这是否是相关的:

LOCAL_LDLIBS:= -lGLESv1_CM -ldl -llog

Hope it helps

这篇关于NDK的OpenGL未定义参考glVertexPointer的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-13 22:13