70 votes

Appeler la fonction c depuis Java

Comment appeler une fonction c à partir de Java. Il semble que c soit basé sur le compilateur.

J'aimerais appeler les fonctions C de Windows depuis Java, et les fonctions GCC depuis Java également. la fonction GCC en Java également.

Une référence ?

1 votes

Vous pouvez consulter la JNI (Java Native Interface).

22 votes

Demandé le 11 mai '11 à 11:11 :-)

1voto

Justas Points 2539

Si vous utilisez Windows et MinGW gcc, vous pouvez avoir besoin d'un drapeau supplémentaire si vous obtenez UnsatisfiedLinkError pour une méthode spécifique dans la librairie :

gcc -D_JNI_IMPLEMENTATION_ -Wl,--kill-at -I"%JAVA_HOME%"\include -I"%JAVA_HOME%"\include\win32 BestCode.c -shared -o BestCode.dll

1voto

aks Points 481

@Jonas a donné une réponse très élaborée, mais je pense qu'il vaut également la peine de consulter ce site web et vous y trouverez toutes les réponses essentielles :

http://www.ntu.edu.sg/home/ehchua/programming/java/javanativeinterface.html

Il explique comment appeler un programme en utilisant JNI :

  • Pour les langages C et C++ ou un mélange des deux
  • JNI sans paramètres, primitives, chaînes de caractères ou tableau de primitives.
  • Accès aux variables des objets, aux méthodes des instances de rappel et bien plus encore.

0 votes

La page web est en panne, le nouveau lien est personal.ntu.edu.sg/ehchua/programming/java/

0voto

JNI - Interface native Java

Pour appeler une fonction C à partir de Java, vous devez utiliser JNI

0voto

Dila Gurung Points 678

Pour rendre la dll compatible 64 bits, supprimez l'option "-MD" de l'instruction ci-dessous.

cl -Ic:\java\include -Ic:\java\include\win32 -MD -LD HelloWorld.c -FeHelloWorld.dll

0voto

Dila Gurung Points 678

J'ai une solution pour ce problème. Ce dont vous devez vous assurer, c'est que vous compilez le code à l'aide d'un compilateur c++ 64 bits pour appeler une fonction java fonctionnant sur un JRE 64 bits. En même temps, nous devons enregistrer le chemin du fichier dll créé dans "Path" sous "Environment variable".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X