NDK OpenGL 未定义对 glVertexPointer 的引用
Posted
技术标签:
【中文标题】NDK OpenGL 未定义对 glVertexPointer 的引用【英文标题】:NDK OpenGL undefined reference to glVertexPointer 【发布时间】:2011-05-12 09:57:37 【问题描述】:在终端中使用 ndk-build 编译以下 C 代码时(我正在运行 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);
使用此 android.mk 文件:
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)
我收到一个错误,未定义对 glVertexPointer 的引用。我想知道为什么,因为我相信我正确地包含了标题并链接了 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
谢谢!
【问题讨论】:
【参考方案1】:我想不出有什么问题,但是当我检查我的 make 文件时,发现有一个不同之处。 由于我不擅长编译器,我不知道它是否相关:
LOCAL_LDLIBS := -lGLESv1_CM -ldl -llog
动态链接器库:
可用并且可以使用 使用 dlopen()/dlsym()/dlclose() 安卓提供的功能 动态链接器。您将需要链接 针对 /system/lib/libdl.so 使用:
LOCAL_LDLIBS := -ldl
希望对你有帮助
【讨论】:
它对我不起作用。我做所有相同但相同的结果和错误。以上是关于NDK OpenGL 未定义对 glVertexPointer 的引用的主要内容,如果未能解决你的问题,请参考以下文章
使用 Android NDK 构建本机 OpenCV 会给出“对 'cv::String::deallocate()' 的未定义引用”
OpenGL Ubuntu 13.10 QtCreator - 未定义对“glutMainLoop”的引用
Android NDK:断言失败:LOCAL_MAKEFILE未定义
Google Project Tango NDK 未定义函数参考