| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/12/2011 09:25:33
|
Thales87
What is classpath?
Membro desde: 24/01/2008 11:58:57
Mensagens: 5
Offline
|
Bom dia,
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:
public static void main(String args[]){
MySharedLibrary lib = (MySharedLibrary) Native.loadLibrary("Teste01", MySharedLibrary.class);
int i = lib.librarymethod("metodoTeste");
System.out.print(i);
}
e
namespace Teste01
{
public class Class2
{
static int metodoTeste()
{
return 2;
}
}
}
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??
Vlw ae
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/12/2011 10:01:13
|
alissonvla
GUJ Master
Membro desde: 17/04/2006 15:29:07
Mensagens: 1491
Offline
|
cara,
primeiro, qdo for postar algum codigo coloque dentro da taga
4 - a chamada do metodo é somente assim
t+
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/12/2011 10:39:03
|
Thales87
What is classpath?
Membro desde: 24/01/2008 11:58:57
Mensagens: 5
Offline
|
Opa, desculpa a falha, corrigi as classes o codigo está assim:
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/12/2011 10:54:49
|
alissonvla
GUJ Master
Membro desde: 17/04/2006 15:29:07
Mensagens: 1491
Offline
|
cara,
faz assim
e para funcionar vc deve ter uma um arquivo Teste01.dll no windows/system32
t+
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/12/2011 10:55:13
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline
|
É 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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/12/2011 11:08:47
|
Thales87
What is classpath?
Membro desde: 24/01/2008 11:58:57
Mensagens: 5
Offline
|
alissonvla, fiz as alterações:
(coloquei esse linha na interface:
e tirei o "static" do metodo no c#)
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??
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/12/2011 11:11:18
|
fabim
GUJ Master
![[Avatar]](/images/avatar/d4e3e8180a65648886ff348c7a6bbff5.jpg)
Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline
|
Pesquisa por JNative cara. Vai simplificar sua vida ao acesso de libraries nativas.
|
ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται
Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/12/2011 11:16:11
|
Thales87
What is classpath?
Membro desde: 24/01/2008 11:58:57
Mensagens: 5
Offline
|
É isso que eu estou usando, mas tá dando erro...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/12/2011 15:32:40
|
alissonvla
GUJ Master
Membro desde: 17/04/2006 15:29:07
Mensagens: 1491
Offline
|
cara,
tem que colocar a dll no windows/system32 so assim que vai funcionar, arruma uma permissão
t+
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/12/2011 08:32:32
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline
|
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/12/2011 09:29:14
|
Thales87
What is classpath?
Membro desde: 24/01/2008 11:58:57
Mensagens: 5
Offline
|
Valeu galera, vou usar web service mesmo!
|
|
|
 |
|
|