C/C++ com JAVA

7 respostas
E

Eu queria ver se alguem sabe como eu coloco um trecho de um programa C/C++ para rodar dentro de um programa em JAVA.
Pois eu faço um trecho do código em assembler, dentro de uma função em C/C++, e esse trecho eu queria usa em java.
Alguem sabe como fazer?

7 Respostas

T

Maneira 1:

a) Converta esse código em uma DLL.
b) A seguir, teste essa DLL com alguma coisa, como o VB 6 usando “DECLARE FUNCTION”, ou outro programa em C mesmo. Veja que essa DLL deve ter interface bastante simples, ou seja, não podemos passar objetos C++ ou outras coisas mais complicadas.
c) Agora, use o pacote JAWIN ( http://jawinproject.sourceforge.net/ ) para chamar essa DLL.

Maneira 2:

a) Converta esse código em uma DLL JNI. Para mais detalhes, o livro do arquiteto do JNI, Sheng Liang ( Java Native Interface: Programmer’s Guide and Specification ) está disponível no site da Sun:

ftp://ftp.javasoft.com/docs/specs/jni.pdf

Isso executa mais rápido mas é mais sujeito a erros.

T

De qualquer maneira, pode até ser que o que você faz em Assembler já esteja disponível no Java - há tantas bibliotecas que talvez alguma faça o que você quer, sem ter de traduzir o seu código.
O que você faz em Assembler?

E

Bom na verdade eu quero fazer um rograma em java que fike somente grando log do q ocorre no windows(por exemplo: abriu o winamp, o programa vai la e grava em arquivo…) existe alguma biblioteca em java q utiliza serviços da bios?

T

Você só quer logar se os programas foram iniciados, ou você precisa fazer alguma coisa se o programa X foi iniciado?
Para o primeiro caso acho que dá para setar alguma LocalPolicy e verificar as coisas com o EventViewer. Existem alguns programas que lêem o EventViewer e podem jogar esse relatório em arquivos, que você pode ler depois.

E

É só logar quando o programa (.exe) é iniciado e quando ele termina. Vo da umas pesquisada nisso que vc falou valeu.
Ah e outra, a dll q vc falo pra fazer,o java aceita código só em C? ou só C++? ou os 2?

T

Se você fizer as coisas direito, tanto faz se é C ou C++. Só tem de tomar um pouco de cuidado.

E
Pq assim, em C (no turbo C) eu consigo usar o asm por exemplo:

asm{

MOV AX,0x200

MOV DL,7

int 0x21

}

Agora em C++ no devC++ da erro no mesmo programa, por isso perguntei se  alguma diferença.
Criado 9 de junho de 2005
Ultima resposta 10 de jun. de 2005
Respostas 7
Participantes 2