Usar dll

6 respostas
J

amigos bom dia...

eu tenho uma dll
e o pior nao tenho documentacao dela...

pois bem...
preciso carregar ela de forma que ela funcione igual a uma classe
ou seja se eu fizer

Minhadll minhadll = new MinhaDll();

quando eu digitar minhadll. e digitar o ponto aparecer a relacao de metodos que ela tem...

eu consigo fazer isso?

tentei fazer alguma coisa do tipo:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package testedll;

/**
 *
 * @author Jonas
 */
public class TesteDll {
   static {
       System.loadLibrary("c:\\client\\ppchip.dll");
   }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        TesteDll t = new TesteDll();
        System.out.println("passou");
        // TODO code application logic here
    }
}

porem quando eu executo ja me da um erro:

java.lang.UnsatisfiedLinkError: Directory separator should not appear in library name: c:\client\ppchip.dll
at java.lang.Runtime.loadLibrary0(Runtime.java:820)
at java.lang.System.loadLibrary(System.java:1028)
at testedll.TesteDll.(TesteDll.java:13)
Could not find the main class: testedll.TesteDll. Program will exit.
Exception in thread "main" Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)

na realidade estou procurando um geito de tentar descobrir quais os metodos desta dll e como sao suas asinaturas...

se alguem conhecer alguma coisa agradeco desde ja...

6 Respostas

W

O seu codigo nunca vai funcionar, vc precisa usar JNA. http://jna.java.net/

PS: jeito eh com J de Java. :slight_smile:

//Daniel

R

Eu ia corrigir o mal ‘geito’ mas uma vez que o colega já o fez vou me deter na parte técnica :smiley: :smiley:

Aqui no meu projeto eu uso um DLL pra se comunicar com ECF,então o fornecedor já disponibiliza a documentação.

Serve pra que essa DLL?

R

Ja viu esse link?
http://www.tecnoteam.com.br/arquivos/Modulos%20SiTef/adicionais/Cf_Bandeiras/SiTef%20-%20Interface%20Simplificada%20com%20a%20aplica__o(VRS-087).pdf

J

obriagdo cara vou dar uma olhada

R

E se for JNI?
http://javafree.uol.com.br/artigo/13913/JNI-Java-Native-Interface.html

J

raf4ever:
Eu ia corrigir o mal ‘geito’ mas uma vez que o colega já o fez vou me deter na parte técnica :smiley: :smiley:

Aqui no meu projeto eu uso um DLL pra se comunicar com ECF,então o fornecedor já disponibiliza a documentação.

Serve pra que essa DLL?

Autocomplete precisa de relação de métodos para funcionar. A dll só tem assembly e uma relação de nomes para c++ ou c dependendo. O único programa que extrai isso é o dumpbin do visual c++ ou programas similares.

ex:

Archive member name at 8: /
2FB537E1 time/date Sat May 13 15:51:13 1995
uid
gid
0 mode
2864 size
correct header end

391 public symbols

 556C _CloseDriver@12
 58A0 _DefDriverProc@20
 5BDC _DriverCallback@28
 5F1C _DrvGetModuleHandle@4
 626A _GetDriverModuleHandle@4
 65C4 _NotifyCallbackData@20
 6914 _OpenDriver@12
 6C44 _PlaySound@12
 6F70 _PlaySoundA@12
 72A0 _PlaySoundW@12

http://support.microsoft.com/kb/177429

Criado 16 de outubro de 2012
Ultima resposta 16 de out. de 2012
Respostas 6
Participantes 5