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 :

Interfaçage Caml/C++ : problème de linkage


Sujet :

Caml

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Interfaçage Caml/C++ : problème de linkage
    Bonjour,

    J'ai consulté le tutoriel suivant :
    http://anne-pacalet.developpez.com/t...-cpp-et-ocaml/ et je souhaite mettre en oeuvre la partie III. Cependant je n'arrive pas à passer l'étape du linkage avec VC++ (j'utilise la version 3.11 de caml).
    Toutes les déclarations de "caml/callback.h" produisent des erreurs de linkage. Pourtant, j'ai bien ajouté libcamlrun.lib aux dépendances supplémentaires. J'ai aussi tenté de changer la convention d'appel de __cdecl à __stdcall, sans succès.
    Est-ce que quelqu'un aurait réussi à linker un exemple aussi simple que celui ci-dessous ?

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <stdio.h
    #include "caml/callback.h"
     
    int main(int argc, char ** argv)
    {
    	caml_startup(argv);
    	return 0;
    }

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par Anveena Voir le message
    ec VC++ (j'utilise la version 3.11 de caml).
    Toutes les déclarations de "caml/callback.h" produisent des erreurs de linkage. Pourtant, j'ai bien ajouté libcamlrun.lib aux dépendances supplémentaires.
    ok mais quelles erreurs ??
    Sans description on ne peut pas savoir on n'est pas madame soleil

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    L'exemple ci-dessus, dans lequel caml_startup est déclaré dans caml/callback.h produit les erreurs suivantes (j'ai supposé que la fonction main était définie dans Main.cpp) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1>Main.obj : error LNK2028: unresolved token (0A000011) "void __cdecl caml_startup(char * *)" (?caml_startup@@$$FYAXPAPAD@Z) referenced in function "int __cdecl main(int,char * *)" (?main@@$$HYAHHPAPAD@Z)
    1>Main.obj : error LNK2019: unresolved external symbol "void __cdecl caml_startup(char * *)" (?caml_startup@@$$FYAXPAPAD@Z) referenced in function "int __cdecl main(int,char * *)" (?main@@$$HYAHHPAPAD@Z)
    1>C:\Users\Kanade\Documents\Visual Studio 2010\Projects\VeCaml\Debug\VeTest.exe : fatal error LNK1120: 2 unresolved externals

  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 Il faut tout nous dire, il ne faut rien nous cacher
    Tu es sous Linux ou sous Windows ?
    On va dire que tu es sous Windows (pas de chance pour toi) et que le tutoriel d'Anne Pacalet est plutôt pour Linux/Unix.
    Citation Envoyé par Anveena
    j'utilise la version 3.11 de caml
    Citation Envoyé par caml.inria.fr/ocaml/release.fr
    Quatre portages d'OCaml pour Microsoft Windows sont actuellement disponibles.
    Ok, la version 3.11, mais quel portage parmi les quatre possibles ?
    Est-ce que déjà tu arrives à compiler du code ocaml en natif (sans linker avec du C++) ? Sinon ça ne va pas le faire.
    Le tutoriel d'Anne Pacalet peut éventuellement t'être utile si tu compile déjà du code ocaml natif à l'aide de GCC.
    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
    Candidat au Club
    Inscrit en
    Septembre 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Oui, en effet, excusez-moi, j'aurais dû précisé que j'étais sous Windows 7.
    J'ai téléchargé la version Win32 pour le port basé sur la suite Microsoft : http://caml.inria.fr/pub/distrib/oca...0-win-msvc.exe
    La compilation de fichiers ML en code natif (à l'aide de ocamlopt, que je lance depuis Visual Studio Command Prompt, et après avoir téléchargé flexdll-bin-0.26) se déroule sans problème. J'obtiens bien les fichiers .exe et ils fonctionnent. La compilation en code portable fonctionne tout aussi bien.

  6. #6
    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
    Et bien c'est déjà une bonne nouvelle

    Malheureusement pour toi peu de (aucun?) visiteurs de ce forum utilisent ce portage msvc et tu pourras t'estimer chanceux si quelqu'un peut t'aider à résoudre ton problème
    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.

Discussions similaires

  1. Code::Blocks sous Linux problème de linkage
    Par JuTs dans le forum Code::Blocks
    Réponses: 3
    Dernier message: 22/03/2006, 16h54
  2. [Code::Blocks] Problème de linkage: "msvcrt.lib"
    Par skhay dans le forum Code::Blocks
    Réponses: 8
    Dernier message: 14/03/2006, 19h39
  3. Plusieurs fichiers => Problème de Linkage
    Par loic911 dans le forum C++
    Réponses: 6
    Dernier message: 01/03/2006, 00h11
  4. Problème de linkage avec la librairie DevIl
    Par Drannor dans le forum DevIL
    Réponses: 1
    Dernier message: 18/01/2006, 23h05
  5. Problème de linkage
    Par lvdnono dans le forum Windows
    Réponses: 4
    Dernier message: 15/06/2004, 12h32

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