.so -> JNI Problemas!

1 resposta
jback

olá pessoal,

seguinte, estou tendo problemas na leitura de um shared-object (.so) em Java…

O QUE EU PRECISO:
Usar rotinas de um .so existente a partir do Java.

O QUE EU JÁ TENTEI FAZER:
Tentei usar JNA (https://jna.dev.java.net/), para acessar diretamente o .so, mas nao tive sucesso. Quando crio um .so para exemplo, funciona perfeitamente, mas na tentativa de ler o .so existente: fracasso.
Tentei ainda o uso JNI. Sem sucesso.

RESUMO DA SITUAÇÃO:
Arquivo .so:

/* possui uma função PRINT( char* texto ); */

Arquivo .c criado para fazer o meio de campo:

...
void imprimir( char* t ){
   PRINT( t ); /* ESTA ESTA NA BIBLIOTECA .SO */
}
void imprimir2( char* t ){
  printf("%s", t ); /* ESTA FUNÇÃO NÃO USA O .SO */
}
...

Após a criação do .c, eu gero o novo .so para uso no Java:
gcc -shared -o libNOVOSO.so -lSOEXISTENTE arquivo.c
e jogo o .so gerado para as libs do sitema (linux):
/usr/lib/

RESULTADO:

  • SE criar um metodo main no codigo .c e compilar-o, consigo acessar perfeitamente os metodos do .so existente;
  • SE, no Java, acessar o metodo imprimir2 (que nao usa a .so existente), tambem funciona perfeitamente;
  • SE tentar usar o método imprimir (o que USA a biblioteca .so existente), ai nao funciona… ??

Parece-me, que ao tentar usar esse 2 níveis de SO, nao funciona…
JAVA->MEU.so->EXISTENTE.so

Alguém tem alguma dica??

Obrigado…

1 Resposta

jback

Parcilamente resolvido!!!

Na verdade vi que o erro é outro…
Vejam:
http://www.guj.com.br/posts/list/74039.java

Criado 8 de novembro de 2007
Ultima resposta 9 de nov. de 2007
Respostas 1
Participantes 1