2010-11-19 8 views
3

auf glVertexPointer Wenn den folgenden C-Code mit NDK-build im Terminal Kompilieren (Ich bin mit Ubuntu):NDK OpenGL undefined reference

#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); 
} 

mit dieser Android.mk Datei:

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) 

Ich bekomme einen Fehler, undefinierter Verweis auf glVertexPointer. Ich frage mich, warum, weil ich glaube, dass ich richtig die Header und verlinkt die Bibliotheken in der Android.mk

Vielen Dank!

Antwort

7

Ich kann mir nichts falsches vorstellen, aber als ich meine Make-Datei checkte, gibt es einen Unterschied. Da ich mit Compiler nicht gut bin, weiß ich nicht, ob es relevant ist:

LOCAL_LDLIBS := -lGLESv1_CM -ldl -llog

Linkers Library: verwendet werden

ist verfügbar und kann die dlopen zu verwenden ()/dlsym()/dcllose() Funktionen von der Android Dynamic Linker zur Verfügung gestellt. Sie müssen gegen /system/lib/libdl.so verbinden mit:

LOCAL_LDLIBS: = -ldl

Hoffe, dass es

+0

für mich funktionierte nicht hilft. Ich mache trotzdem dasselbe Ergebnis und Fehler. –