• Jueves 25 de Abril de 2024, 08:39

Autor Tema:  Fallo JNI  (Leído 679 veces)

agua_clara

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Fallo JNI
« en: Lunes 2 de Febrero de 2009, 13:58 »
0
Hola a todos, quiero hacer una dll para poder trabajar con un código que tengo en C desde Java. Esta es la primera vez que trabajo con JNI y debo de estar haciendo algo mal. Me da el fallo: undefined reference to `help'.

Los comandos que utilizo para crear la dll son los siguientes:
Código: Text
  1.     > gcc -c miPrograma.c -o miPrograma.o -I"C:/Soft/Sun/SDK/jdk/include" -I"C:/Soft/Sun/SDK/jdk/include/win32"
  2.  
  3.     > gcc -lm -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at -I"C:SoftSunSDKjdkinclude" -I"C:SoftSunSDKjdkincludewin32" -L"C:lib" -shared assrules.c -o assrules.dll
  4.  

En este último comando me da el fallo siguiente:
Citar
   C:DOCUME~1UserCONFIG~1Temp/cceDovOl.o:miPrograma.c:(.text+0x13): undefined ref
erence to `help'
    collect2: ld returned 1 exit status


El problema me pasa cuando intento llamar a la función help() que hay en un fichero .c que tengo.

Os indico el código que tengo y los comandos que uso para crear la dll:

Código Java:
Código: Text
  1. class miPrograma
  2. {
  3.      private native void print();
  4.      
  5.      public static void main(String[] args)
  6.      {
  7.          new miPrograma().print();
  8.      }
  9.      static {
  10.          System.loadLibrary("miPrograma");
  11.      }
  12. }
  13.  


Código miPrograma.c:
Código: Text
  1. #include <jni.h>
  2. #include <stdio.h>
  3. #include "miPrograma.h"
  4. #include "miLibreria.h"
  5.  
  6.  
  7.  JNIEXPORT void JNICALL
  8.  Java_miPrograma_print(JNIEnv *env, jobject obj)
  9.  {
  10.      printf("Hello World!n");
  11.      help();    /* Esta función está definida en el ficehro miLibreria.c */
  12.      return;
  13.  }
  14.  


Código miLibreria.c:
Código: Text
  1. #include <stdio.h>
  2.  
  3. static void help (void)
  4. {
  5.      printf("Helppp n");
  6. }
  7.  
  8.  

Código miLibreria.h:
Código: Text
  1. extern void help (void);
  2.  


Os agradeceria que me pudierais ayudar. He buscado información en diferentes foros y manuales pero no he encontrado la solución.

Leo