Oi pessoal,
Estou utilizando o NetBeans e no meu código em java estou chamando uma dll gerada por um outro programa (C++). O problema é que o Java não está enxergando esta dll. Como posso fazer para configurar no NetBeans, o caminho da dll?
Desde já agradeço,
Flávia
nunca trabalhei com arquivos dll no java… mas, huuummm, como tu faz pra carregar ele no java? tu tem uma string no código q pesquisa por ele em um caminho específico ou ele é como uma classe q tem pacote e nome?
Apenas coloquei a seguinte linha de código no Java:
System.loadLibrary(“nome_da_dll”);
tentou colocar o caminho completo até a sua dll na String? tipo, C:\foo\bar\library.dll … :roll: bem, não sei como se trabalha com dll’s… :oops:
Tentei colocar o caminho completo, mas não resolveu.
Obrigada.
Flávia
e o caminho completo com barra invertida?!? e com duas barras?!?
Tu tah cum sorte Flávia… tbm naum seih nada de dll… :roll:
Ola Flavia,
tente como nesse exemplo:
public class HelloWorld {
private static native void writeHelloWorldToStdout();
public static void main(String[] args) {
//Tem que ser o caminho absoluto
System.load("c:/path/to/dll/HelloWorld.dll");
writeHelloWorldToStdout();
}
}
qq coisa consulte:
http://www.inonit.com/cygwin/jni/helloWorld/load.html
falow;
Oi Pablo,
Obrigada pela dica, só que não resolveu.
No artigo que passou, pode ser feito tanto da maneira que fiz como também da maneira que passou.
Acho que o problema está com a configuração do NetBeans, devo configurar em algum lugar o diretório onde se encontra a dll.
Veja o meu código em Java tentando acessar C++:
/*
- China.java
-
- Created on March 28, 2005, 11:32 AM
*/
package Pkg;
public class China {
public static native void writeMessage();
/** Creates a new instance of HelloWorld */
public static void main(String[] args) {
System.loadLibrary(“beto”);
writeMessage();
}
}
O problema que está dando no NetBeans é o seguinte:
java.lang.UnsatisfiedLinkError: writeMessage
at beto.China.writeMessage(Native Method)
at beto.China.main(China.java:23)
Exception in thread “main”
Sabe o que pode ser este erro?
Tem um artigo que achei que diz o seguinte:
Crie uma DLL com estes arquivos e a coloque no classpath e pronto, ao chamar o método ‘main’ da classe HelloWorld o texto ‘Hello World!’ será impresso no stdout. Um item importante em Win32 é configurar a convenção de chamada (calling convention) do linker para __stdcall isto é importante pois o calling convention dita como será montado o nome do método exportado na dll (mangling) sem isto o JVM não será capaz de encontrar seus métodos na Dll.
Seria esse o problema?
Muito Obrigada,
Flávia
Oi pessoal,
Obrigada pela ajuda de todos. Consegui resolver meu problema.
O problema que estava ocorrendo era com o diretório incorreto no codigo .cpp, o que ocasionou a geração incorreta do .h.
Muito Obrigada,
Flávia