3 votes

NDK OpenGL référence indéfinie à glVertexPointer

Lors de la compilation du code C suivant avec ndk-build dans le Terminal (je suis sous Ubuntu) :

#include 

#include 
#include 

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

Je reçois une erreur, référence indéfinie à glVertexPointer. Je me demande pourquoi car je pense avoir correctement inclus les en-têtes et lié les bibliothèques dans Android.mk

/home/thomas/Documents/LinuxProgramming/EclipseWorkspace/OpenGLDrawinginJNI/obj/local/armeabi/objs/OpenGLJNI/org_opengldrawinjni_DrawinJNI.o: Dans la fonction `Java_org_opengldrawinjni_DrawinJNI_Draw':
/home/thomas/Documents/LinuxProgramming/EclipseWorkspace/OpenGLDrawinginJNI/jni/org_opengldrawinjni_DrawinJNI.c:33: référence indéfinie vers `glVertexPointer'
collect2: ld a retourné 1 exit status
make: *** [/home/thomas/Documents/LinuxProgramming/EclipseWorkspace/OpenGLDrawinginJNI/obj/local/armeabi/libOpenGLJNI.so] Erreur 1

Merci!

7voto

Jason Rogers Points 8924

Je ne trouve aucun problème mais quand j'ai vérifié mon fichier make, il y a une différence. Comme je ne suis pas doué avec les compilateurs, je ne sais pas si c'est pertinent :

LOCAL_LDLIBS := -lGLESv1_CM -ldl -llog

Bibliothèque de liaison dynamique :

est disponible et peut être utilisée pour utiliser les fonctions dlopen()/dlsym()/dlclose() fournies par le lien dynamique Android. Vous devrez lier avec /system/lib/libdl.so avec :

LOCAL_LDLIBS := -ldl

J'espère que cela aide

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X