Dll em java

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!