[resolvido] Usar Dll com Java

6 respostas
D

como posso usar uma DLL para implementar o TEF da Skytef?? alguem ja fez isso? por onde eu posso começar?

6 Respostas

R

Pesquise por JNA (Java Native Access)

D

nao tem um hello world?? kkkk

D

achei esse hello world.

public class HelloWorld {
    public interface CLibrary extends Library {
        CLibrary INSTANCE = (CLibrary) Native.loadLibrary(
            (Platform.isWindows() ? "msvcrt" : "c"), CLibrary.class);
        void printf(String format, Object... args);
    }
 
    public static void main(String[] args) {
        CLibrary.INSTANCE.printf("Hello, World\n");
        for (int i = 0; i < args.length; i++) {
            CLibrary.INSTANCE.printf("Argument %d: %s\n", i, args[i]);
        }
    }
}

importei o jar para dentro do projeto, mas ele da o seguinte erro.

Erro: O método principal não foi encontrado na classe HelloWorld; defina o método principal como:
   public static void main(String[] args)
D

por exemplo, este era para dar um som de Beep. mas porque nao funciona? ele nao acessa a dll dentro da system?

import com.sun.jna.Library;
import com.sun.jna.Native;


public class Beep {
	public interface Kernel32 extends Library {

		public boolean Beep(int FREQUENCY, int DURATION);

		public void Sleep(int DURATION);
	}

	public static void main(String[] args) {
		Kernel32 lib = (Kernel32) Native
				.loadLibrary("kernel32", Kernel32.class);
		lib.Beep(698, 500);
		lib.Sleep(500);
		lib.Beep(698, 500);
	}
}
D

mesmo com o jar no projeto porque ele nao acha o metodo?

java.lang.UnsatisfiedLinkError: jnidispatch (/com/sun/jna/win32-amd64/jnidispatch.dll)
D

ops.
Jar errado. Parece que tinha uma versao que nao funcionava.
Obrigado pelo help

Criado 26 de julho de 2012
Ultima resposta 27 de jul. de 2012
Respostas 6
Participantes 2