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++Builder Discussion :

probleme initialisation d´une application avec une librairie matlab


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Points : 35
    Points
    35
    Par défaut probleme initialisation d´une application avec une librairie matlab
    bonjour a tous,
    je vous explique mon probleme.
    J´utilise une librairie cree avec matlab compiler dans un programme en c qui est inclu dans un projet que j´ouvre avec c++builder6.Le projet sous c++builder 6 me cree un .exe.
    Et je prends cet exe pour le mettre sur un ordinateur ou il y a une simulation qui tourne en continue et j´utilise cette simulation en lui envoyant des donnees et elle me renvoie des resultats.(ce pc n´a pas matlab alors que celui ou je programme l a)
    Le probleme que j´ai cest que quand je compile mon exe sur mon ordi avec c++builder6 je n´ai aucune erreur de compilation mais quand je le lance sur le pc ou il ya la simulation j´ai une erreur me disant qu il ne peut pas initialiser l´application .
    Cela vient du fait que la librairie vient de matlab, mais j´ai installe matlab compiler run time et j´ai vu sur des forums que l´on doit installer Visual Studio 2005 runtime libraries for MATLAB en plus. Mais vu que moi je compile avec borland, dois je ajouter des librairies speciales de borland pour pouvoir deployer ma librairie matlab?

  2. #2
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    La librairie que tu utilises c'est une DLL, un fichier lib, un .h, ...
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Points : 35
    Points
    35
    Par défaut
    En faite je sais pas trop. J´ai inclu le lib.h dans l´entete de mon programme en c.J´ai ajoute le .lib dans le projet sous c++builder6 et je met la dll dans le fichier avec mon programme qui est dans un dossier de l´application.En faite l´application a un projet.bpr.
    Quand je travaille sur mon projet j ouvre le .bpr
    Ma dll est aussi au meme endroit que le .bpr et ce bpr quand je le compile cree un .exe.

    dans mon dossier1: dossier 2
    dossier3
    projet.bpr
    lib.dll
    .exe

    dans dossier 2 je met mon programme en c avec le .c et le .h ,le lib.h, le lib.c, le lib.dll,le lib.lib .....

    et ca marche sur mon ordinateur.J´ai vu ca sur une aide mathworks il me semble.
    en faite j´utilise le .h et le .lib de la dll pour se linker avec.

  4. #4
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Peut-être que ce lien peut t'aider: http://www.codeproject.com/KB/DLL/MatlabSharedLib.aspx

    Le fichier lib peut ne pas être compatible avec C++Builder alors il faut utiliser la ligne de commande suivante avec la DLL généré:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    implib bcblib.lib mylib.dll
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Points : 35
    Points
    35
    Par défaut
    merci pour ta reponse mais je suis un peu surpris, je ne trouve pas beaucoup de documents sur les librairies quand je cherche sur internet.
    Parce que j´arrive a faire marcher mon programme comme ca sur mon pc mais je ne sais pas reellement pourquoi ca marche et surtout j´aimerais mieux comprendre comment utiliser une dll avec le .lib et le .h mais je n´ai pas trouve grand chose sur le net.

  6. #6
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Citation Envoyé par steph496 Voir le message
    merci pour ta reponse mais je suis un peu surpris, je ne trouve pas beaucoup de documents sur les librairies quand je cherche sur internet.
    Parce que j´arrive a faire marcher mon programme comme ca sur mon pc mais je ne sais pas reellement pourquoi ca marche et surtout j´aimerais mieux comprendre comment utiliser une dll avec le .lib et le .h mais je n´ai pas trouve grand chose sur le net.
    Normalement tu ajoutes le .h et le .lib à ton projet et tu distribue le .dll avec ton .exe. Sans la DLL ton application n'est pas en mesure de fonctionner. En général tu met ta DLL dans le même dossier que ton .exe, sinon tu peux la mettre avec les autres dans C:\WINDOWS\system32.

    Va lire ceci: http://lfe.developpez.com/DLL/
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Points : 35
    Points
    35
    Par défaut
    Mais en faite je sais pas trop.
    Parce que je teste mes programmes sous c++builder en construisant un projet dans lequel je met le .dll , le .lib et le .h comme indique au dessus et tout marche tres bien mais les seuls elements que j'utilise pour appeler ma librairie c est .

    Je met le lib.h en haut dans mon fichier c.
    et apres je verifie avec ce qui suit :
    if( !mclInitializeApplication(NULL,0) )
    {
    fprintf(stderr,"Could not initialize the application.\n");
    return -1;

    }
    si lapplication est initialise correctement ou pas. Apres je fais)libmatrix nom de la librairie)
    if (!libmatrixInitialize())
    {
    fprintf(stderr,"could not initialize the library
    properly\n");
    return -2;
    }
    et a la fin je ferme avec

    libmatrixTerminate();
    mclTerminateApplication;

    mais japelle ma librairie seulement avec le lib.h au debut du programme donc je sais pas si c est correct ou non.
    Ca marche sur un projet que je cree mais je n'arrive pas initialiser proprement l application quand je deploy mon programme dans l'application et donc je ne pe pas utiliser mon programme.Mais je crois que c est le .h et le .lib qui link la librairie dll donc normalement c'est bon.
    j'utilise pas trop les commandes pour utiliser une dll.
    Mais comme j utilise une librairie cree avec matlab .

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 116
    Points : 35
    Points
    35
    Par défaut
    J´ai resolu mon probleme. En faite il fallait seulement cocher la case mbuild with runtime package dans les options de mon projet creer avec c++builder .

    Par contre maintenant j´ai une autre question.
    Quand je regarde les exemples donnees par matlab il cree des inputs pour les fonctions mlf avec par exemple mxCreatedoubleMatrix mais il ne cree rien pour l´output de la fonction mlf. On declare juste un mxArray *output au debut du programme et on l utilise directement dans la fonction. Comment le programme sait la memoire qu il doit allouer a la sortie vu qu on lui indique ni sa taille ni le type de donne qu on lui envoie.

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/05/2010, 13h30
  2. Réponses: 1
    Dernier message: 22/06/2009, 13h00
  3. Comment lier une application avec une librairie statique ?
    Par michel_bbm dans le forum Visual C++
    Réponses: 7
    Dernier message: 08/04/2008, 15h49
  4. Compiler en debug avec une librairie en release
    Par Philippe320 dans le forum MFC
    Réponses: 4
    Dernier message: 25/11/2005, 18h33
  5. [RCP] pb d'export du produit avec une librairie
    Par nuandafr dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 19/08/2005, 13h08

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