Download - Usando Java Para Chamar .So e
25/3/2014 Usando Java para chamar .so e .dll - Gustavo Ferreira
http://www.gqferreira.com.br/artigos/ver/usando-java-para-chamar-so-dll 1/3
Home Sobre Artigos Projetos Blog Contato
Bibliotecas .so .dll
Usando Java para chamar .so e .dll
Publicado em 27/08/2013
Recomende isto no Google
Materiais
Para fazer chamadas à bibliotecas nativas do
sistema operacional vamos precisar da biblioteca JNA
(Java Native Access). Para isso faça o download
direto na fonte:
https://github.com/twall/jna/raw/master/dist/jna.jar
Você também vai precisar de uma biblioteca nativa
para fazer os testes. Se você não tiver uma e/ou
quiser criar a própria, veja no final do artigo como.
Vou partir do presuposto de que você já tem o Java
instalado e devidamente configurado e, incialmente,
de que você faça uso de alguma IDE para facilitar.
Downloads dos fontes e compilados no final da página
Direto ao ponto
Classe Java
Para cada função da biblioteca (com seus parâmetros e retornos) deve haver uma
assinatura idêntica na iterface BibliotecaNativa (que poderia se chamar
"XuxuComBanana").
Deve haver os dois imports do JNA sempre.
Se você estiver usando Windows, a .dll deve estar no mesmo diretório que a classe ou
em C:\Windows\System32 (se não me engano).
Se você estiver usando Linux, a .so deve estar obrigatoriamente em /usr/lib e se chamar
libcalc.so e permanecer como calc na classe Java.
Nunca coloque a extensão da biblioteca na chamada do Java.
Criando a sua biblioteca escrita em C (no Linux)
Você precisará do GCC (GNU Compiler Collection) para compilar o código. Muito provavelmente
seu Linux já tenha "de fábrica". Vamos criar uma Shared Library (bibliteca compartilhada)
Header da biblioteca
Ultimas atualizações
Usando Java para chamar .so e .dll
Direto ao ponto: Como chamar uma
biblioteca nativa do sistema (.so/.dll) direto
pelo Java usando JNA. Veja nesse artigo
simples e objetivo uma forma de usar
bibliotecas nativas dos sistema operacional
através do Java, sem historinha e blá blá...
mas se quiser, veja através do exemplo
como compilar em C uma biblioteca no
Linux.
Ubuntu Edge
Os smartphones dominam o mercado de
dispositivos móveis atualmente, afinal de
contas ninguém mais quer um aparelho
celular comum para jogar snake e mandar
SMS. Pensando nessa evolução, a
Canonical decidiu radicalizar e criar um
aparelho que seja smartphone e
computador ao mesmo tempo, tudo isso
com um hardware comparável ao PC...
Veja o que houve no FLISOL 2013
Você já participou alguma vez do FLISOL?
Afinal, do que se trata? FLISOL significa
Festival Latino Americano de Instalação de
Software Livre. É um evento internacional
que é realizado simultaneamente em várias
cidades e é promovido uma vez por ano. O
evento aborda palestras, demonstrações,
debates...
/* Gustavo Ferreira */Busca
Anuncie no Googlegoogle.com.br/AdWords/Promo
Seja Encontrado. Consiga Clientes. Obtenha Hoje R$100 aoInvestir R$50
01 import com.sun.jna.Library;02 import com.sun.jna.Native;03 04 public class RodarComJNA {05 06 public interface BibliotecaNativa extends Library{07 public int soma(int n1, int n2);08 }09
10 public static void main(String[] args) {11 BibliotecaNativa lib = (BibliotecaNativa) Native.loadLibrary("calc",
BibliotecaNativa.class);12 13 int resultado = lib.soma(10, 15);14 15 System.out.println("Mostrando o resultado retornado pela biblioteca
direto no Java: " + resultado);16 }17 }
25/3/2014 Usando Java para chamar .so e .dll - Gustavo Ferreira
http://www.gqferreira.com.br/artigos/ver/usando-java-para-chamar-so-dll 2/3
Download (fontes e compilados)
Crie um arquivo com a extensão .h da sua biblioteca contendo todas as assinaturas das funções
que você desejar criar. No exemplo utilizado o arquivo se chama calc.h
Crie o arquivo principal da sua biblioteca, o .c.
Agora vamos compilar a nossa biblioteca e gerar um arquivo objeto. Em seguida fazer o link com
as bibliotecas do sistema. Os comandos são esses, incluse na ordem:
gcc -c -fPIC calc.c -o calc.o
gcc -shared -o libcalc.so calc.o
Agora você vai precisar copiar a biblioteca para o diretório padrão no GNU/Linux:
sudo sp libcalc.so /usr/lib
Criando um JAR com o JNA embutido
Vamos agora criar na unha um JAR com as classes do JNA embutido. Se você usa IDE (tomara)
esqueça isso pois a ferramenta fará isso por você. Se for um "hardcore", siga os passos abaixo.
Descompacte a biblioteca JNA que você baixo:
unzip jna.jar
Você deve ter percebido que apareceu uma pasta chamada META-INF e outra chamada com. Vamos
agora criar uma pasta chamada bibliotecas e copiar a com para dentro.
mkdir bibliotecas
cp com -r bibliotecas
Agora é necessário compilar a classe Java que foi apresentada logo no início do artigo. Durante a
compilação vamos indicar qual é o classpath, ou seja, onde está as nossas bibliotecas.
javac RodarComJNA.java -cp bibliotecas
Antes de criar o JAR você precisará criar um arquivo contendo as informações para o manifesto do
pacote. Crie um arquivo com qualquer nome (utilizei 'manifesto.txt') contendo o seguinte
conteúdo:
Manifest-Version: 1.0
Created-By: 1.6.0_37 (Sun Microsystems Inc.)
Main-Class: RodarComJNA
Agora vamos de fato criar o JAR, colocando dentro do pacote o manifesto, as classes e a pasta
principal dos fontes do JNA.
jar cfm RodarComJNA.jar manifesto.txt *.class com
Pronto! Já é para aparecer um arquivo chamado RodarComJNA.jar. Para executar o seu JAR basta
chamar via linha de comando da seguinte forma:
java -jar RodarComJNA.jar
Qualquer dúvida, deixe seu comentário logo abaixo. Se deu certo ou errado, deixe também ^^
Comentarios (0) para Usando Java para chamar .so e .dll
Não há comentários ainda, seja o primeiro!
Gostou do artigo? Acha que poderia ser melhor em algum ponto? Dê o seu feedback!
Nome: *
Informe o seu nome
1 #include <stdio.h>2 #include <stdlib.h>3 4 int soma(int n1, int n2);
1 #include <stdio.h>2 #include <tdlib.h>3 #include "calc.h"4 5 int soma(int n1, int n2){6 printf("Print dentro da biblioteca:%i\n", n1+n2);7 return n1+n2;8 }
25/3/2014 Usando Java para chamar .so e .dll - Gustavo Ferreira
http://www.gqferreira.com.br/artigos/ver/usando-java-para-chamar-so-dll 3/3
Enviar
Seu site:(Opcional)
Informe o seu site
Comentário: *
Contatos
Não é possível exibir esta página
Com base nas políticas de acesso da sua organização, o acesso a este site( http://www.facebook.com/plugins/likebox.php?href=http%3A%2F%2Fwww.facebook.com%2Fgqferreira.com.br&width=315&height=293&colorscheme=light&show_faces=true&border_color=%23fff&stream=false&header=true )foi bloqueado.
Em caso de dúvidas, entre em contato com o SERVICEDESK (7290)[email protected]
© 2013 | gqferreira.com.br | All Rights Reserved | Professional Portfolio is a CSS Template relealsed by CSSHeaven
Soluções
Desktop - Desenvolvimento de softwares
para controle financeiro, PDV, ERP entre
outros.
Mobile - Sistemas para smpartphones e
tablets.
Web - Websites, CMS e sistemas web
para controle financeiro e produtivo.
Privacidade
Privacy & Terms
Type the text