ihhhh mais calma aí rapaz… ![:slight_smile: :slight_smile:](https://www.guj.com.br/images/emoji/twitter/slight_smile.png?v=9)
olha nao sei sobre essa library KERNEL32 mas posso te mostrar um exemplo de JNI… vamos fazer um exemplo para somar dois números:
1 - Crie um arquivo *.c que vai ter o código nativo:
#include “HelloNative.h”
#include <stdio.h>
// metodo para utilizar a função “printf” do C
// método teste
JNIEXPORT void JNICALL Java_HelloNative_teste
(JNIEnv *env, jclass jc)
{
printf("Soma JNI
");
}
// método para ler um inteiro utilizando o velho “scanf”
// método readInt
JNIEXPORT jint JNICALL Java_HelloNative_readInt
(JNIEnv *env, jclass jc, jstring prompt)
{
int a = 0;
char buf[128];
const char *str = (*env)->GetStringUTFChars(env, prompt, 0);
printf("%s", str);
(*env)->ReleaseStringUTFChars(env, prompt, str);
scanf("%d", &a);
return a;
//return (*env)->NewStringUTF(env, buf);
}
// e este aqui server para somar blz???
JNIEXPORT jint JNICALL Java_HelloNative_soma
(JNIEnv *env, jclass jc, jint n1, jint n2)
{
return n1+n2;
}
2 - feito isso agora vamos escrever a implementação da clase Java que acessará este código nativo em C…
HelloNative.java
class HelloNative
{
// vc precisa declarar como “native”… pois a implementação do método está feita em outra linguagem… aqui vai só assinatura!
public static native void teste();
public static native int readInt(String prompt);
public static native int soma(int n1,int n2);
static
{
// este é o nome da dll -> depois vamos gerar uma HelloNative.dll
System.loadLibrary(“HelloNative”);
}
public static void main(String[] args)
{
// agora é só utilizar os métodos como se fossem feitos em Java mesmo!
HelloNative.teste();
int n1 = HelloNative.readInt("Numero 1: ");
int n2 = HelloNative.readInt("Numero 2: ");
int soma = HelloNative.soma(n1,n2);
System.out.println("
Soma: " + soma + "
");
}
}
3 - agora compile a classe:
javac HelloNative.java
4 - agora gere o arquivo *.h do C
javah -jni HelloNative
a saída será um arquivo HelloNative.h
lembre que no aquivo HelloNative.c vc faz um
#include “HelloNative.h”
5 - Agora a DLL:
já falaram outros meios de criar a dll aqui no fórum… eu costumo fazer assim…
precisa ter instalado o Microsoft Visual C++ para fazer deste jeito…
cl -IC:j2sdk1.4.1include -IC:j2sdk1.4.1includewin32 -LD HelloNative.c
6 - pronto, agora execute normalmente;
java HelloNative
isto dava um bom artigo ![:smiley: :smiley:](https://www.guj.com.br/images/emoji/twitter/smiley.png?v=9)