ola pessoal
gostaria de saber como é possivel utilizar uma dll ja existente no java:
Exemplo: chamar a funcao "int Beep(int,int)"da “kernel32.dll”?
é possivel :?:
ola pessoal
gostaria de saber como é possivel utilizar uma dll ja existente no java:
Exemplo: chamar a funcao "int Beep(int,int)"da “kernel32.dll”?
é possivel :?:
Dá uma olhadinha…
http://www.excelsior-usa.com/landing/xfunction-dll.html
acho que pode ser uma :idea:
ja olhei essa, queria uma solucao mais barata[/url]
Faz o seguinte, cria uma dll em C++ e coloca um metodo nela que delega para o da dll que você quer, assim:
java --> dll c++ --> kernerl32.dll --> dll c++ --> java
pra criar uma dll em c++ e usar no Java vai um exemplinho abaixo:
primeiro faça a classe java
public class JavaeNativo{
//o metodo nativo
public native int metodo();
public static void main(String[] args){
//carrega bibliotecac.dll no windows ou bibliotecac.so no linux
System.loadLibrary("bibliotecac");
//chama o metodo e imprime o resultado
System.out.println(metodo());
}
}
compile a classe:
java JavaeNativo.java
depois use o javah para gerar o arquivo .h para o c++:
javah JavaeNativo
ele vai gerar um arquivo JavaeNativo.h
aí vc inclui ele na dll c++
#include <stdio.h>
#include "JavaeNativo.h"
JNIEXPORT jint JNICALL Java_JavaeNativo_metodo(JNIEnv* env, jobject jThis){
return(1234);
}
ao rodar o codigo java, vai ser impresso 1234, aí é só você chamar o metodo de kernel32.dll dentro do codigo c++, pegar o retorno dele e devolver no lugar de 1234
O codigo acima pode ter alguns erros porque fiz de cabeça aqui.
Espero que ajude!