Pessoal estou quebrando a cabeça faz alguns dias, eu estou precisando compilar uns códigos de C++ e utilizar usando java. Já tentei bastante e ainda não consegui resolver o erro:
Exception in thread "main" java.lang.UnsatisfiedLinkError: jni.HelloWorld.writeHelloWorldToStdout()V
at jni.HelloWorld.writeHelloWorldToStdout(Native Method)
at jni.HelloWorld.main(HelloWorld.java:10);
Irei postar o código de teste que eu estou tentando utilizar, é simplesmente o java chamar um método C++ que imprime "hello world", segue os códigos
JAVA:
public class JNI {
static{
System.loadLibrary("JNIExample_lib");
}
native void printHello();
}
public class Main {
public static void main(String[] args) {
JNI a = new JNI();
a.printHello();
}
}
C++
jni_JNI.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class jni_JNI */
#ifndef _Included_jni_JNI
#define _Included_jni_JNI
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: jni_JNI
* Method: printHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_jni_JNI_printHello
(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif
Bem eu compilo com o visual studio, ele gera a dll, mas no java ocorre a expetion já dita... Eu estou achando que é algum problema na compilação, acho que a compilação do visual studio não está linkando o header com o código direito. Alguém pode me ajudar?
Pergunta
jp.fernandz
Pessoal estou quebrando a cabeça faz alguns dias, eu estou precisando compilar uns códigos de C++ e utilizar usando java. Já tentei bastante e ainda não consegui resolver o erro:
Exception in thread "main" java.lang.UnsatisfiedLinkError: jni.HelloWorld.writeHelloWorldToStdout()V
at jni.HelloWorld.writeHelloWorldToStdout(Native Method)
at jni.HelloWorld.main(HelloWorld.java:10);
Irei postar o código de teste que eu estou tentando utilizar, é simplesmente o java chamar um método C++ que imprime "hello world", segue os códigos
JAVA:
public class JNI { static{ System.loadLibrary("JNIExample_lib"); } native void printHello(); }public class Main { public static void main(String[] args) { JNI a = new JNI(); a.printHello(); } }C++ jni_JNI.h/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class jni_JNI */ #ifndef _Included_jni_JNI #define _Included_jni_JNI #ifdef __cplusplus extern "C" { #endif /* * Class: jni_JNI * Method: printHello * Signature: ()V */ JNIEXPORT void JNICALL Java_jni_JNI_printHello (JNIEnv *, jclass); #ifdef __cplusplus } #endif #endifJNI.cpp#include "jni.h" JNIEXPORT void JNICALL Java_jni_JNI_printHello (JNIEnv * a, jclass b){ printf("Ola Mundo"); }Bem eu compilo com o visual studio, ele gera a dll, mas no java ocorre a expetion já dita... Eu estou achando que é algum problema na compilação, acho que a compilação do visual studio não está linkando o header com o código direito. Alguém pode me ajudar?
Desde já agradeço.
Editado por jp.fernandzLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.