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…