Java - Ayuda JNI

 
Vista:

Ayuda JNI

Publicado por Leo (6 intervenciones) el 02/02/2009 15:07:56
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:
> gcc -c miPrograma.c -o miPrograma.o -I"C:/Soft/Sun/SDK/jdk/include" -I"C:/Soft/Sun/SDK/jdk/include/win32"

> gcc -lm -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at -I"C:SoftSunSDKjdkinclude" -I"C:SoftSunSDKjdkincludewin32" -L"C:lib" -shared assrules.c -o assrules.dll

En este último comando me da el fallo siguiente:
C:DOCUME~1MRibCONFIG~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:
class miPrograma
{
private native void print();

public static void main(String[] args)
{
new miPrograma().print();
}
static {
System.loadLibrary("miPrograma");
}
}

Código miPrograma.c:
#include <jni.h>
#include <stdio.h>
#include "miPrograma.h"
#include "miLibreria.h"


JNIEXPORT void JNICALL
Java_miPrograma_print(JNIEnv *env, jobject obj)
{
printf("Hello World! ");
help(); /* Esta función está definida en el ficehro miLibreria.c */
return;
}

Código miLibreria.c:
#include <stdio.h>

static void help (void)
{
printf("Helppp ");
}

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

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

Leo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder