Estou precisando invocar um metodo implementado em C# a partir de uma app java, pelo que eu vi na net o pessoal passa pra c++, vi tb sobre a jna, mas nao estou tendo sucesso, usando jna meu codigo esta assim:
e está dando erro na hora de carregar a dll, onde eu coloco ela? É assim mesmo? Vai funcionar com C#/.Net??
Nao tenho acesso à pasta system32, tem como colocar a pasta da minha dll no path??
Opa, desculpa a falha, corrigi as classes o codigo está assim:
//Classe main java//Nao consigo colocar arquivos no System32, entao usei o metodo System.setProperty, agora, a parte de carregar a library está funcionandopublicstaticvoidmain(Stringargs[]){System.setProperty("jna.library.path","D:/Documents and Settings/ke1x.PETROBRAS/Meus documentos/Visual Studio 2008/Projects/Teste01/Teste01/bin/Release/");MySharedLibrarylib=(MySharedLibrary)Native.loadLibrary("Teste01",MySharedLibrary.class);inti=lib.librarymethod();System.out.print(i);}
//classe co mo metodo em c#publicclassClass2{publicstaticintlibrarymethod(){return2;}}
Mas ainda está dando erro:
Exception in thread “main” java.lang.UnsatisfiedLinkError: Error looking up function ‘librarymethod’: Não foi possível encontrar o procedimento especificado.
Sendo que Teste01, é o nome da solution no Visual Studio, mais alguma ideia?? Estou perdido
publicclassClass2{publicstaticintlibrarymethod()// cara nao sei, acho que vc vai ter problema com esse static, qualquer coisa vc tira ele{return2;}}
e para funcionar vc deve ter uma um arquivo Teste01.dll no windows/system32
t+
E
entanglement
É bem mais complicado que parece.
Já vi três soluções diferentes:
a) Você tem de registrar sua DLL .NET como se fosse COM (isso não é difícil mas deixa sua DLL um pouco lenta) e a seguir você tem de acessar isso usando um pacote como o Jacob ( http://sourceforge.net/projects/jacob-project/ ). Boa sorte
b) Você tem de comprar um software como o http://www.jnbridge.com/ ou o http://www.ezjcom.com/java.net.html - não sei se elas funcionam bem.
c) Você expõe sua classe C# como um web service, e então chama esse web service em Java. É um bocadinho lento também e exige hospedar sua classe C# em um web server como o IIS.
e deu o mesmo erro, eu só não coloquei a dll no system32, pq aqui eu nao tenho permissao pra isso, mas eu to usando o System.setProperty(“jna.library.path”, “…”), mas acho que esse não é o problema, vou pesquisar agora sobre o jacob, o que vc acha??
F
fabim
Pesquisa por JNative cara. Vai simplificar sua vida ao acesso de libraries nativas.
T
Thales87
É isso que eu estou usando, mas tá dando erro…
A
alissonvla
cara,
tem que colocar a dll no windows/system32 so assim que vai funcionar, arruma uma permissão
t+
E
entanglement
JNative e JNA não são adequadas para chamar DLLs em .NET. Não quebre a cabeça com elas - vai dar erro mesmo, isso é esperado.