Pode acreditar, eu já tentei tudo isso :x , já coloquei a dll na system32, já acrescentei a pasta da aplicação na PATH, já chamei loadLibrary(“libHelloNative.dll”) e loadLibrary(“libHelloNative”). O jeito é largar tudo é virar filósofo ou estudante de letras ou programador em BrainFuck :lol: !!
Eu ainda estou convencido que o problema é nas opções de compilação passadas ao gcc e não no código java, acho que está sendo criado apenas um código objeto em vez de uma biblioteca dinâmica, mas tentei -shared que seria a opção óbvia mas nada
continua…[/quote]
Pelo que entendi vc não tirou o lib da frente do nome.
Tem que ser assim
C:\Documents and Settings\Ivo Augusto\Desktop\JNI>gcc -Wall -D_JNI_IMPLEMENTATIO
N_ -Wl, --kill-at -I "C:\Arquivos de programas\Java\jdk1.5.0_04\include" -I "C:\
Arquivos de programas\Java\jdk1.5.0_04\include\win32" -shared -o libHelloNative.
dll HelloNative.c
Porém não é encontrada a opção --kill-at, olha a saída do compilador:
cc1.exe: error: unrecognized command line option "-fkill-at"
Tentei tirar a opção --kill-at, ele compila, mas gera o seguinte erro na hora de utiliza-lo
C:\Documents and Settings\Ivo Augusto\Desktop\JNI>java HelloNativeTest
Exception in thread "main" java.lang.UnsatisfiedLinkError: greeting
at HelloNative.greeting(Native Method)
at HelloNativeTest.main(HelloNativeTest.java:3)
Eu ainda vou ver se encontro uma saída neste site, foi onde achei material mais promissor. Quanto ao outro site, ainda não tive tempo de dar uma olhada para ver se funciona, quando eu ver posto aqui a resposta
Eu ainda venço a guerra contra o JNI
:lol:
gcc -I"C:\Arquivos de programas\Java\jdk1.5.0_04\include"
-I"C:\Arquivos de programas\Java\jdk1.5.0_04\include\win32"
-Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at -shared -o
libHelloNative.dll HelloNative.c
estava dando problema porque eu estava separando depois da virgula
-Wl,--kill-at
porém faz parte de uma única opção de compilação!
Só para complementar, não foi necessário eu colocar a dll na system32 não do próprio diretório funcionou. vlw pela ajuda de todos
flw :roll:
gcc -I"C:\Arquivos de programas\Java\jdk1.5.0_04\include"
-I"C:\Arquivos de programas\Java\jdk1.5.0_04\include\win32"
-Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at -shared -o
libHelloNative.dll HelloNative.c
estava dando problema porque eu estava separando depois da virgula
-Wl,--kill-at
porém faz parte de uma única opção de compilação!
Só para complementar, não foi necessário eu colocar a dll na system32 não do próprio diretório funcionou. vlw pela ajuda de todos
flw :roll:[/quote]
Finalmente consegui criar as dll e libs tanto para linux quanto para windows:
vou colocar abaixo o que fiz para quem estiver interessado em JNI não precisar quebrar a cabeça como eu: :lol:
em windows:
gcc -I"C:\Arquivos de programas\Java\jdk1.5.0_04\include"
-I"C:\Arquivos de programas\Java\jdk1.5.0_04\include\win32"
-Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at -shared -o
libHelloNative.dll HelloNative.c
java HelloNativeTest
[quote=txithihausen]@kubanacan
Realmente!!! o problema é que não posso usar esses compiladores :x !! pois o projeto que estou fazendo é opensource!![/quote]
Você pode tentar o MinGW que é um gcc para Windows:
[quote=bobmoe][quote=txithihausen]@kubanacan
Realmente!!! o problema é que não posso usar esses compiladores :x !! pois o projeto que estou fazendo é opensource!![/quote]
Você pode tentar o MinGW que é um gcc para Windows: