IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Execution de fonctions C


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut Execution de fonctions C
    Hello,

    J'ai des scripts en C (fichiers .c).
    Est-ce possible de les executer depuis JAVA?

    Par exemple, j'ai cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int main (int argc, char **argv)
    {
    ...
    }
    Je voudrais l'appeler, mais depuis JAVA...

    Merci, A+

  2. #2
    Membre chevronné Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par défaut
    Compile ton fichier c en exécutable. Ensuite, il est possible d'y accéder grâce à Runtime.getRuntime().exec("..."). Remplace les trois points par le chemin de ton exécutable suivi des arguments, comme si tu le lançais en ligne de commandes.

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Par défaut
    Tu peux aussi passer par JNI (Java Native Interface), c'est assez simple à utiliser et tu pourras appeler directement ton code C.

    Tu dois faire des dll avec ton code C et les appeler depuis Java par JNI.

  4. #4
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    Ouais, merci, JNI a l'air pas mal... Seulement j'ai trouvé comment
    faire des dll avec ton code C et les appeler depuis Java par JNI
    Mais je n'ai pas réussi à appeler une méthode C directement, sans passer par une dll ou un .h.

    Comment faire?

    Merci, A+

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Avec JNI, tu es obligé de passer par une dll...

    La procédure (simplifiée) à suivre est la suivante :

    1) créer une classe java avec les prototypes des méthodes "native"
    2) utiliser javah pour générer le .h
    3) créer un programme c pour implémenter les méthodes du .h
    4) en faire une dll

    Dans la classe (1), tu load la dll par System.load ou System.loadLibrary

    Si ton serveur cible est sous unix, c'est un .o et il me semble que la bibliothèque doit être préfixée par lib

    J'espère n'avoir rien oublié...

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Par défaut
    Oui pardon, la dll est un passage obligé, m'en souvenais plus
    (il me semblait que l'on pouvait s'en passer, autant pour moi)

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/01/2006, 16h02
  2. Réponses: 1
    Dernier message: 17/10/2005, 22h47
  3. [VBA] Executer une fonction en passant son nom en argument
    Par David Guyon dans le forum Access
    Réponses: 4
    Dernier message: 05/10/2005, 19h56
  4. executer une fonction à la fermeture d'une fenêtre
    Par Oluha dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 22/02/2005, 09h46
  5. [Reflection] Executer une fonction dont le nom est contenu dans un String
    Par christobal dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 05/07/2004, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo