Olá à todos?
Queria saber?
Como insiro código C/C++ ao Java?
Não insere. O que vc faz é implementar o que quer em C ou C++ e fazer seu programa em Java “conversar” com o código compilado nativamente. O que buscar no Google: Java Native Interface (JNI) e Java Native Access (JNA).
Exemplinho básico.
Em Java:
public class OlaJNI {
// carga da biblioteca
static {
System.loadLibrary( "ola" ); // ola.dll
}
// método nativo
private native void olaMundo();
public static void main( String[] args ) {
new OlaJNI().olaMundo();
}
}
Compile assim:
javac -h . OlaJNI.java
Vai gerar o header no mesmo diretório (OlaJNI.h).
Em C:
#include <jni.h>
#include <stdio.h>
#include <stdlib.h>
#include "OlaJNI.h"
JNIEXPORT void JNICALL Java_OlaJNI_olaMundo( JNIEnv *env, jobject obj ) {
printf( "ola mundo (do programa em C)!\n" );
}
Compile a DLL assim (estou usando Windows e meu GCC é do MinGW), mudando para o caminho do JDK do seu ambiente:
gcc -shared -o ola.dll -I"C:\Program Files\Java\jdk-25\include" -I"C:\Program Files\Java\jdk-25\include\win32" OlaJNI.c
Vai gerar uma DLL com o nome ola (ola.dll) que vai ser carregada pela classe quando for executada (veja o código Java).
Agora você executa sua classe Java, que vai chamar o código nativo que está na DLL:
java --enable-native-access=ALL-UNNAMED OlaJNI -Djava.library.path=.
Publiquei no GitHub: GitHub - davidbuzatto/exemplo-jni: Exemplo básico de uso de JNI.
Uma outra pergunta?
Aproveitando o gancho, qual o compilador gcc para Windows usar em Linha de Comando?
Só sei para Linux.
Eu uso o gcc do MinGW, instalado via MSYS2.
Baixar, instalar e abrir o terminal (deve abrir depois da instalação).
No terminal do MSYS2:
pacman -S mingw-w64-ucrt-x86_64-toolchain
Vai instalar o toolchain para a ucrt (universal c runtime, visual studio 2015 e superiores).
Configurar o PATH para apontar para o bin, que por padrão vai instalar em:
C:\msys64\ucrt64\bin
No Linux o que vai mudar é a geração da lib, algo como
gcc -shared -fpic -o libola.so -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux OlaJNI.c
Onde JAVA_HOME é o caminho para a instalação do seu JDK.
Aproveitando da dica, como instalo o g++ (C++) no MSYS2?
Da forma que postei acima. O g++ faz parte do GCC (GNU Compiler Collection).

