Exemple d'utilisation des bibliothèques partagées sous Windows

Cet exemple vous guide tout au long du processus d'utilisation des bibliothèques partagées natives avec une application Java™ sur les systèmes Windows.

Procédure

  1. Créez un exemple d'application, Sample.java.
    public class Sample
    {
       public native void printFromNative( );
    
       public static void main( String[] args )
       {
          Sample sample = new Sample( );
          sample.printFromNative( );
       }
    
       static
       {
          try
          {
             System.loadLibrary( "Sample" );
          }
          catch ( Exception e )
          {
             System.out.println( "ERROR: Unable to load libSample.so");
             e.printStackTrace( );
          }
       }
    }
  2. Compiler Sample.java.
    javac Sample.java
  3. Utilisez javah pour créer un fichier d'en-tête pour le code natif.
    javah Sample
  4. Créez un fichier appelé Sample.c.
    #include <stdio.h>
    #include "Sample.h"
    
    JNIEXPORT void JNICALL Java_Sample_printFromNative( JNIEnv * env, jobject obj )
    {
       printf( "Printing from native\n" );
    }
  5. Compilez Sample.c , puis liez et liez dans une bibliothèque partagée qui peut être chargée et appelée dynamiquement à partir de Java.
    cl -Ic:\java\include -Ic:\java\include\win64  -MD -LD Sample.c -Fe Sample.dll
    -MD
    Assure que Sample.dll est lié à la bibliothèque C à unités d'exécution multiples Win64.
    -LD
    Demande au compilateur C de générer une DLL au lieu d'un programme exécutable Win64 normal.
  6. Exécutez la classe Sample.
    set PATH=<path-generated-dll>;%PATH%
    ou
    java -Djava.library.path=. Sample
    Sortie du programme :

    Printing from native

Résultats

Vous devez maintenant pouvoir utiliser la même infrastructure pour accéder aux bibliothèques partagées natives à partir des applications Java.