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

 C++ Discussion :

CMake, KDE4 et JNI


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut CMake, KDE4 et JNI
    Bonjour à tous,

    Je souhaite écrire une petite librairie JNI pour permettre à un programme java d'accéder directement au systray de KDE4. N'étant pas un grand développeur C++, j'essaye de procéder par étapes ; j'ai donc commencé par créer une librairie "Hello word" toute simple, sans KDE4, et la classe java qui va avec. Comme KDE4 utilise CMake, je m'y suis mis aussi. J'ai créé le fichier CMakeLists suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    project (JKDE4)
    cmake_minimum_required(VERSION 2.6)
    find_package(JNI REQUIRED)
    include_directories(${JNI_INCLUDE_DIRS})
    add_library(JKDE4 SHARED kde4_KDE4Test.cpp)
    après compilation, l'ensemble s'exécute correctement ; java trouve la librairie, la charge et l'appel à la fonction C se déroule nominalement.

    Lorsque j'ai voulu ajouter du code KDE4 dans le C, patatras, java me sort un UnsatisfiedLink, car il ne trouve plus la fonction native dans la librairie qu'il charge (oui oui celle-ci est bien chargée). Pour essayer de trouver la raison du problème, j'ai repris mon hello world ci-dessus, et j'ai uniquement rajouté les en-têtes KDE4 dans le fichier CMakeLists.txt ; le code lui-même n'ayant pas changé, il ne fait pas appel à des fonction KDE4. On obtient le fichier suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    project (JKDE4)
    cmake_minimum_required(VERSION 2.6)
    find_package(JNI REQUIRED)
    find_package(KDE4)
    include(KDE4Defaults)
    include_directories(${JNI_INCLUDE_DIRS})
    kde4_add_library(JKDE4 SHARED kde4_KDE4Test.cpp)
    Quand je fait un 'nm -g' sur les fichiers créés, on ne trouve effectivement plus la fonction java correspondante dans les symboles exportés, c'est pour cela que java ne la trouve pas. Ma question est donc que faut-il rajouter, dans les sources C ou le fichier CMakeLists.txt pour exporter correctement la fonction dans la librairie ?
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [KDE] Premiers pas avec CMake et la compilation de KDE4
    Par dourouc05 dans le forum Plateformes
    Réponses: 0
    Dernier message: 05/08/2011, 10h09
  2. [JNI]dll java
    Par icepower dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 03/09/2009, 14h53
  3. [ JNI ] [ plug-in ] generateur d'en-tete *.h
    Par akira_le_gaucher dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 20/04/2004, 17h18
  4. [debutant][JNI]Stocker des objet pour les rappeler plus tard
    Par Celenor dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 28/03/2004, 01h28
  5. [Débutant][JNI]Erreur de chargement de dll
    Par Agifem dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 24/04/2003, 14h36

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