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

NetBeans Java Discussion :

Multi-platforme et DLLs


Sujet :

NetBeans Java

  1. #1
    Membre régulier
    Profil pro
    lkjlgj
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Angola

    Informations professionnelles :
    Activité : lkjlgj

    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Points : 96
    Points
    96
    Par défaut Multi-platforme et DLLs
    Bonjour !

    Avec Netbeans je développe une application qui devra tourner sur PC,Linux et Mac.
    Pour l'instant, l'éxécutable fonctionne bien (sur Linux et PC) mais je dois maintenant ajouter des DLLs.

    Or, dans Linux il n'y a pas de DLL donc je ne sais pas comment implémenter ce concept...

    Quelqu'un a une idée ?

  2. #2
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 815
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 815
    Points : 7 644
    Points
    7 644
    Par défaut
    Salut

    Citation Envoyé par devroot Voir le message
    Or, dans Linux il n'y a pas de DLL
    Si si... sauf que ça ne s'appelle pas des dll... mais des "shared library", et ça a généralement l'extension *.so

    Quand tu dis que tu dois ajouter des dll, c'est juste les récupérer et les mettre avec ton application, ou c'est les compiler pour chaque OS?

  3. #3
    Membre régulier
    Profil pro
    lkjlgj
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Angola

    Informations professionnelles :
    Activité : lkjlgj

    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Points : 96
    Points
    96
    Par défaut
    Merci pour ta réponse.

    Je complète ma question : il s'agit bien de compiler une dll pour chaque plateforme...

  4. #4
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 815
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 815
    Points : 7 644
    Points
    7 644
    Par défaut
    Citation Envoyé par devroot Voir le message
    il s'agit bien de compiler une dll pour chaque plateforme...
    Dans ce cas quel est le problème exactement? Les explications pour compiler un fichier *.so avec gcc se trouvent aisément sur le net...

  5. #5
    Membre régulier
    Profil pro
    lkjlgj
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Angola

    Informations professionnelles :
    Activité : lkjlgj

    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Points : 96
    Points
    96
    Par défaut
    Merci, je comprends maintenant que le menu "créer une DLL" génère
    en fait un fichier .SO sous linux et que les mêmes codes source génèrent
    un fichier .DLL sous Windows.

    Je regarde les tutoriels pour g++, merci !

  6. #6
    Membre régulier
    Profil pro
    lkjlgj
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Angola

    Informations professionnelles :
    Activité : lkjlgj

    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Points : 96
    Points
    96
    Par défaut
    Re-bonjour,

    J'ai cherché mais je n'ai pas trouvé d'exemple d'appel de dll (fichier so) sous linux.

    J'ai trouvé des indications sur l'inclusion du fichier en-tête :http://www.developpez.net/forums/d10...etbeans-c-cpp/

    J'ai bien trouvé des exemples g++ mais tout est en ligne de commande alors que je suis
    sous Netbeans.

    Est-ce que quelqu'un peut me fournir les lignes de code (qui je suppose contiennent un EXTERN ou quelquechose dans le genre) qui permettent d'appeler la bibliothèque
    dynamiquement ?

    Merci !

  7. #7
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 815
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 815
    Points : 7 644
    Points
    7 644
    Par défaut
    Citation Envoyé par devroot Voir le message
    Est-ce que quelqu'un peut me fournir les lignes de code (qui je suppose contiennent un EXTERN ou quelquechose dans le genre) qui permettent d'appeler la bibliothèque
    dynamiquement ?
    C'est pas la même chose que sous windows? On a une spec C++ spéciale windows et une autre spéciale linux pour l'appel de fonctions d'une librairie externe?

  8. #8
    Membre régulier
    Profil pro
    lkjlgj
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Angola

    Informations professionnelles :
    Activité : lkjlgj

    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Points : 96
    Points
    96
    Par défaut
    Bon, alors je vais essayer d'utilliser les lignes suivantes que j'avais employées
    pour un exe+dll sous Windows.

    Est-ce que ça semble viable ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    typedef long (__stdcall *DLLFUNC_TRAMES)(arg1, arg2, etc.);
    DLLF_T  Res_T;
    hinstDLL=LoadLibrary ("mabibli.dll");
    	if (hinstDLL==NULL)
    			{
    			return false;
    			}
    	else
    			{
    			Res_T=(DLLFUNC_TRAMES)GetProcAddress(hinstDLL, "DLLamoi");
    			if (Res_T)
    				Res_T(arg1, arg2, etc.);
    			}
        FreeLibrary (hinstDLL);

  9. #9
    Membre régulier
    Profil pro
    lkjlgj
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Angola

    Informations professionnelles :
    Activité : lkjlgj

    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Points : 96
    Points
    96
    Par défaut
    Bon, je cherche encore à créer une DLL sous Linux (fichier .so) mais je ne trouve que des exemples sous Windows. Du coup ça ne marche pas.

    Ci-dessous un exemple (merci Wikipedia) en C/C++ avec un include windows.h que Netbeans GCC ne reconnaît pas...

    S'il y a des personnes qui ont déjà programmé des DLL sous linux, qu'ils se manifestent, merci !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <windows.h>
     
    // DLL entry function (called on load, unload, ...)
    BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
    {
        return TRUE;
    }
     
    // Exported function - adds two numbers
    extern "C" __declspec(dllexport) double AddNumbers(double a, double b)
    {
        return a + b;
    }

    J'ai aussi trouvé le code suivant qui m'a l'air plus "neutre" mais aucune indication n'est donnée sur les includes nécessaires pour LoadLibrary alors ça ne compile pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     /* get handle to dll */
       HINSTANCE hGetProcIDDLL = LoadLibrary("C:\\MyDLL.dll");
     
       /* get pointer to the function in the dll*/
       FARPROC lpfnGetProcessID = GetProcAddress(HMODULE (hGetProcIDDLL),"MyFunction");
     
       /*
          Define the Function in the DLL for reuse. This is just prototyping the dll's function.
          A mock of it. Use "stdcall" for maximum compatibility.
       */
       typedef int (__stdcall * pICFUNC)(char *, int);
     
       pICFUNC MyFunction;
       MyFunction = pICFUNC(lpfnGetProcessID);
     
       /* The actual call to the function contained in the dll */
       int intMyReturnVal = MyFunction("hello", 5);
     
       /* Release the Dll */
       FreeLibrary(hGetProcIDDLL);
     
       /* The return val from the dll */
        returnintMyReturnVal;

  10. #10
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Salut,

    Je pense que ton soucis c'est que là tu es dans une section NetBeans, sous section du forum Java.
    Ton problème, bien que tu utilises NetBeans est plus un problème de librairie dynamique en C++ et sa génération suivant les plateformes.


    Je suis sur à 200% que sur les forums C++ tu auras ta réponse en 5 minutes et que la mettre en œuvre dans ton projet NetBeans ne devrait plus alors être insurmontable.

    Bonne chance,

    Bulbo

  11. #11
    Membre régulier
    Profil pro
    lkjlgj
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Angola

    Informations professionnelles :
    Activité : lkjlgj

    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Points : 96
    Points
    96
    Par défaut
    Ah OK,

    Je déménage ma discussion vers C++.

    Mais il me semblait l'avoir placé dans "Netbeans IDE" indépendamment de Java...

    Merci!

  12. #12
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Comme je n'ai pas vu de lien vers l'IDE NetBeans dans la section C++, probable que tu vas toucher une nouvelle audience en expliquant ton problème là bas

  13. #13
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 815
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 815
    Points : 7 644
    Points
    7 644
    Par défaut
    Citation Envoyé par devroot Voir le message
    Ci-dessous un exemple (merci Wikipedia) en C/C++ avec un include windows.h que Netbeans GCC ne reconnaît pas...
    Si tu es sous linux, à mon avis c'est un peu normal que gcc ne reconnaisse pas les import de l'API windows...


    Citation Envoyé par devroot Voir le message
    S'il y a des personnes qui ont déjà programmé des DLL sous linux, qu'ils se manifestent, merci !
    Tu montres du code pour lier dynamiquement un librairie, et tu demandes à ceux qui ont déjà programmé une lib? Ce n'est pas la même chose...

    Regarde ça (la partie sur dlopen):

    http://www.yolinux.com/TUTORIALS/Lib...ndDynamic.html

    Mais j'ai comme l'impression qu'il y a mésentente sur ce que tu veux faire... compiler une librairie, ou charger une librairie?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/09/2009, 16h31
  2. Réponses: 5
    Dernier message: 18/01/2008, 07h08
  3. projet GTK+ multi platforme
    Par leged dans le forum GTK+ avec C & C++
    Réponses: 14
    Dernier message: 22/08/2006, 12h36
  4. Quel language choisir ? (multi-platforme)
    Par kabdz08 dans le forum Linux
    Réponses: 14
    Dernier message: 15/03/2006, 17h20
  5. Langage Multi-Platforme ?!
    Par Yanlep dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 07/04/2003, 17h02

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