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

Caml Discussion :

Chargement dynamique de dll


Sujet :

Caml

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 67
    Points : 36
    Points
    36
    Par défaut Chargement dynamique de dll
    Bonjour,

    Savez vous s'il existe un lib ocaml pour charger des dll dynamiquement (ie pendant l'execution) a la maniere de ctypes en Python ?

    J'ai fait une rapide recherche sur google, mais pour l'instant j'ai rien trouvé.

    Sinon, il y aurait moyen de se debrouiller avec LoadLibrary de l'api win32 ?

    merci

  2. #2
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Tu as la librairie Dynlink fournie avec la distribution qui permet uniquement de charger dynamiquement des librairies en code-octet (donc tournant sous la machine virtuelle). Pour d'autres, la réponse est NON.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 67
    Points : 36
    Points
    36
    Par défaut
    Ok, il n'existe rien aujourd'hui!
    Mais ce serait quand meme envisageable, tu penses?

  4. #4
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Même si c'était faisable je crois que ça ne se fera pas.
    Si tu es intéressé par une ou des DLLs en particulier ça doit pouvoir entrer dans la rubrique interface avec le C (enfin je suppose), mais c'est du cas par cas (avec GCC et tes 10 doigts), et n'attend pas une méthode générale.
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    J'ai peut-être mal compris la question, mais tu veux uniquement charger du code OCaml dynamiquement pendant l'exécution de ton programme ?

    Si c'est ça, la réponse n'est pas "non" comme tu dis : c'est possible.

    En utilisant DynLink tu peux faire ça pour tous les programmes compilés en bytecode (par ocamlc donc).
    Par ailleurs, il est aussi possible de le faire pour le code natif, c'est une fonctionnalité encore expérimentale (mais qui marche bien, il me semble), qui n'est pas incluse dans la distribution OCaml par défaut, mais est intégrée dans le CVS depuis la version 3.10 :
    annonce : http://alan.petitepomme.net/cwn/2007.06.19.html#6
    site de la branche natdynlink : http://alain.frisch.fr/natdynlink.html

    Par ailleurs, si tu interfaces ton code OCaml avec du code C, celui-ci peut très bien charger des bibliothèques dynamiques s'il le souhaite.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 67
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par bluestorm Voir le message
    J'ai peut-être mal compris la question, mais tu veux uniquement charger du code OCaml dynamiquement pendant l'exécution de ton programme ?
    Mon idée est de charger du code binaire d'une dll dynamiquement pendant l'exécution d'un programme ocaml (interprété ou compilé).

    C'est un peu comme l'api windows LoadLibrary qui permet de charger une dll dans le process et ainsi de pouvoir acceder au fonction/code disponible dans la dll.

    Pour ce qui est de natdynlink je suis tombé dessus, mais je n'ai pas tout compris avec "Simplified dynamic linking of C code under Windows".

  7. #7
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Citation Envoyé par funtix Voir le message
    Sinon, il y aurait moyen de se debrouiller avec LoadLibrary de l'api win32 ?
    Tu ne vises que la plate-forme ou Windows, ou tu veux être plus portable ? Si c'est seulement Windows, tu gagnerais peut-être à utiliser F#. Ca sera aussi simple à faire qu'en C# (mais tu ajoutes une dépendance à .NET).

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 67
    Points : 36
    Points
    36
    Par défaut
    ok pour F#
    mais dans le cas ou l'on voudrais une solution portable, quelles sont les possibilités ?

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 67
    Points : 36
    Points
    36
    Par défaut
    Pour ceux qui chercheraient, j'ai trouvé le module DL.
    Je suis entrain de réaliser le portage sur windows. Mon but étant d'utiliser l'API Win32, je dois trouver une solution pour les appels qui utilisent des pointeurs en argument de fonction pour retourner le(s) résultat(s).
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DWORD GetCurrentDirectory(
      DWORD nBufferLength,
      LPTSTR lpBuffer
    );

Discussions similaires

  1. Réponses: 7
    Dernier message: 24/05/2013, 09h09
  2. [VB.NET] Chargement dynamique des dlls de l'application
    Par leSeb dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/01/2006, 17h49
  3. [MFC VC.NET] Chargement dynamique de DLL
    Par vanitom dans le forum MFC
    Réponses: 3
    Dernier message: 26/01/2005, 13h56
  4. Dll a chargement dynamique
    Par delire8 dans le forum C++Builder
    Réponses: 7
    Dernier message: 05/06/2003, 22h47
  5. Chargement dynamique de DLL sous Unix
    Par Willou dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 18/12/2002, 18h25

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