Path

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