2010-11-19 24 views
3

Lors de la compilation du code C suivant avec NDK-construction dans le Terminal (je suis sous Ubuntu):NDK OpenGL undefined reference to glVertexPointer

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

avec ce fichier 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) 

J'obtiens une erreur, référence indéfinie à glVertexPointer. Je me demande pourquoi, parce que je crois bien inclus les en-têtes et les bibliothèques Reliée dans le 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 

Merci!

Répondre

7

Je ne peux pas penser à quelque chose de mal mais quand j'ai vérifié mon fichier make il y a une différence. Puisque je ne suis pas bon avec les compilateurs Je ne sais pas si elle est pertinente:

LOCAL_LDLIBS := -lGLESv1_CM -ldl -llog

Dynamic Linker Library:

est disponible et peut être utilisé utiliser le dlopen ()/dlsym()/dlclose() fonctions fournies par l'éditeur de liens dynamiques Android. Vous devrez créer un lien contre /system/lib/libdl.so avec:

LOCAL_LDLIBS: = -ldl

Hope it helps

+0

Il ne fonctionnait pas pour moi. Je fais tout de même mais le même résultat et l'erreur. –