Salve galera…
Tive muitas dificuldades em executar javah, entender o classpath, etc. Tenho tido novos resultados agora, to seguindo um tutorial e muitas, muitas dicas aqui do GUJ. Mas vamos lá…agora eu to tendo um probleminha com .dll. To fazendo um exemplo simples com o famoso “ola mundo”.
crie a parte do java
[code]
package jni;
class OlaMundo { //declaração da classe
public native void diga();//declaração do metodo nativo “diga”
public native void diga2();//declaração do metodo “diga2”
static {
System.loadLibrary("OlaMundo"); //carrega a biblioteca "OlaMundo"
}
public static void main(String[] args) {//metodo main
OlaMundo ola = new OlaMundo();//uma instancia da classe OlaMundo
ola.diga();//ola chamando o metodo nativo "diga"
ola.diga2();//ola chamando o metodo nativo "diga2"
}
}[/code]
compilei com javac.
gerei o .h com javah
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class jni_OlaMundo */
#ifndef _Included_jni_OlaMundo
#define _Included_jni_OlaMundo
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: jni_OlaMundo
* Method: diga
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_jni_OlaMundo_diga
(JNIEnv *, jobject);
/*
* Class: jni_OlaMundo
* Method: diga2
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_jni_OlaMundo_diga2
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
criei o metodo nativo no Dev-C++ criando a dll OlaMundo.dll
[code]
#include <jni.h>
#include “jni_OlaMundo.h”
JNIEXPORT void JNICALL Java_jni_OlaMundo_diga (JNIEnv * env, jobject jobj){
printf(“Eu sou o metodo nativo >diga<, imprimeindo ‘Ola Mundo’.\n”);
}
JNIEXPORT void JNICALL Java_jni_OlaMundo_diga2 (JNIEnv * env, jobject jobj){
printf(“Eu sou o metodo nativo >diga2<, imprimeindo ‘Ola Mundo’ tambem.\n”);
}[/code]
Tudo parece estar correto, mas quando eu executo o código, é executado apenas um metodo da dll, e aparece este erro
Exception in thread "main" java.lang.UnsatisfiedLinkError: jni.OlaMundo.diga2()V
at jni.OlaMundo.diga2(Native Method)
at jni.OlaMundo.main(OlaMundo.java:13)
Eu sou o metodo nativo >diga<, imprimeindo 'Ola Mundo'.
Java Result: 1
A minha dll está no C:\Windows\System32
Se alguem puder me ajudar, muito agradecido.