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

Visual C++ Discussion :

compiler une dll avec visual studio 2005


Sujet :

Visual C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut compiler une dll avec visual studio 2005
    Bonjour,

    Je suis débutant en visual studio. J'ai dévéloppé une dll en visual studio 2005. Lors de la compilation en release je n'ai aucun executable (.exe), pourtant la dll est bien créé. Quand je passe en mode debug visual me demande l'executable et je sais pas quoi mettre puisqu'il n'a pas été crée. J'ai essayé avec visual studio 2008 et c'est pareil.

    Voici le header de ma dll

    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
     
    //////////////////////////////////////////////////////////////////////
    //
    // GetSABRPrice.h : interface to DLL functions
    //
    //////////////////////////////////////////////////////////////////////
     
    #ifndef __GETSABRPRICE_H_
    #define __GETSABRPRICE_H_
     
    void __stdcall InitSABRForward(long& p_lSize, long* p_lDate, long& p_lStart, long& p_lMat, double& p_fForward, double& p_fAlpha, double& p_fBeta, double& p_fNu, double& p_fRho, long& p_lStep, bool p_bBSActive) ;
     
    void __stdcall GetForwardBSOption(long& p_lSize, double* p_pValueSABR, double* p_pValueBS = NULL) ;
     
    void __stdcall GetSABRForward(long& p_lSize, double* p_pValueSABR ) ;
     
    #endif
    et le .cpp de ma dll

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    #include "CMisc.h"
    #include "CDate.h"
    #include "CTrajectories.h"
    #include "CSingleTraject.h"
    #include "GetSABRPrice.h"
     
    //////////////////////////////////////////////////////////////////////
     
    void __stdcall InitSABRForward(long& p_lSize, long* p_lDate, long& p_lStart, long& p_lMat, double& p_fForward, double& p_fAlpha, double& p_fBeta, double& p_fNu, double& p_fRho, long& p_lStep, bool p_bBSActive)
    {
      CDate         l_dStart = CDate(p_lStart) ;
      CDate         l_dMat   = CDate(p_lMat) ;
      vector<CDate> l_oDate ;
     
      l_oDate.resize(p_lSize) ;
     
      for(int i = 0 ; i < p_lSize ; i++)
      {
        l_oDate[i] = CDate(p_lDate[i]);
      }
     
      if(! CSingleTraject::initPath(l_oDate, l_dStart, l_dMat, p_fForward, p_fAlpha, p_fBeta, p_fNu, p_fRho, p_lStep, p_bBSActive))
      {
        exit(0) ;
      }
    }
     
    //////////////////////////////////////////////////////////////////////
     
    void __stdcall GetForwardBSOption(long& p_lSize, double* p_pValueSABR, double* p_pValueBS)
    {
      CTrajectories* l_pPath = CSingleTraject::getPath() ;
      long i ;
     
      if(! l_pPath)
      {
        exit(0) ;
      }
     
      if(! l_pPath->generate())
      {
        exit(0) ;
      }
     
      vector<double>* l_pValueSABR = CSingleTraject::getValueSABR() ;
      vector<double>* l_pValueBS   = CSingleTraject::getValueBS() ;
     
      for(int i = 0 ; i < p_lSize ; i++)
      {
        p_pValueBS[i] = (*l_pValueBS)[i] ;
      }
     
      for(i = 0 ; i < p_lSize ; i++)
      {
        p_pValueSABR[i] = (*l_pValueSABR)[i] ;
      }
    }
     
    //////////////////////////////////////////////////////////////////////
     
    void __stdcall GetSABRForward(long& p_lSize, double* p_pValueSABR)
    {
      CTrajectories* l_pPath = CSingleTraject::getPath() ;
     
      if(! l_pPath)
      {
        exit(0) ;
      }
     
      if(! l_pPath->generate())
      {
        exit(0) ;
      }
     
      vector<double>* l_pValueSABR = CSingleTraject::getValueSABR() ;
     
      for(int i = 0 ; i < p_lSize ; i++)
      {
        p_pValueSABR[i] = (*l_pValueSABR)[i] ;
      }
    }
    Ensuite j'ai un fichier .def pour exporter mes fonctions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    EXPORTS
          GetSABRForward
          GetForwardBSOption
          InitSABRForward

    J'utilise ces fonctions à partir d'excel vba. Et à chaque fois vba me dit : point d'entrée introuvable pourtant j'ai bien indiqué l'adresse de ma dll.

    Donc pour résumer j'ai deux problèmes :

    D'une part le fait que l'executable n'est pas créé dans visual
    Et d'autre part que vba n'arrive pas à entrer dans la dll.

    Les deux problèmes sont certainement liés

    Merci d'avance de me venir en aide

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 655
    Points : 188 665
    Points
    188 665
    Par défaut
    Citation Envoyé par DebutantVisualStudio Voir le message
    Bonjour,

    Je suis débutant en visual studio. J'ai dévéloppé une dll en visual studio 2005. Lors de la compilation en release je n'ai aucun executable (.exe), pourtant la dll est bien créé. Quand je passe en mode debug visual me demande l'executable et je sais pas quoi mettre puisqu'il n'a pas été crée. J'ai essayé avec visual studio 2008 et c'est pareil.
    Bonjour,

    C'est tout à fait normal que VS ne produise pas d'EXE, vu que tu crées une DLL.

    Quand tu veux tester ta DLL de débogage, VS se débrouille pour que l'exécutable utilise cette DLL, et aucune autre du même nom. L'EXE en question est donc un exécutable d'une application qui utilise la DLL.

    Aussi, pour faciliter la lecture de ton post, peux-tu utiliser la balise [CODE ] ? Petit descriptif. Cela nous aidera à mieux lire ton code pour y retrouver d'éventuelles erreurs.

    Pour ce qui est du VBA : je n'ai personnellement strictement aucune expérience sur le sujet, je ne pourrai donc pas t'aider.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Compilation dll avec visual studio 2005
    Je te remercie pour cette reponse rapide..Au moins ça m'enlève une épine du pied. Si je comprend bien l'executable que me demande visual studio c'est le .exe d'excel.
    Par contre pourquoi vba n'arrive pas à entrer dans ma dll , la question reste en suspens..Encore merci pour ce debut de réponse.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut, est-ce que tu as correctement déclaré les fonctions de la dll exportées, au début de ton code VBA.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Compilation dll avec visual studio 2005
    Voici comment j'ai déclaré les fonctions de la dll en vba

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    Public Declare Sub InitSABRForward Lib "D:\ProjetPricing\SABRPricer\SABRPricer.dll" (p_lSize As Long, ByRef p_lDate As Long, p_lStart As Long, p_lMat As Long, p_fSpot As Double, p_fAlpha As Double, p_fBeta As Double, p_fNu As Double, p_fRho As Double, p_lStep As Long, ByVal p_bBSActive As Boolean)
    Public Declare Sub GetSABRForward Lib "D:\ProjetPricing\SABRPricer\SABRPricer.dll" (p_lSize As Long, ByRef p_fValueSABR As Double)
    Public Declare Sub GetForwardBSOption Lib "D:\ProjetPricing\SABRPricer.dll" (p_lSize As Long, ByRef p_fValueSABR As Double, ByRef p_fValueBS As Double)

  6. #6
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    EXPORTS
          GetSABRForward
          GetForwardBSOption
          InitSABRForward
    Après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    EXPORTS
          GetSABRForward             @1
          GetForwardBSOption        @2
          InitSABRForward             @3

  7. #7
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Et puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #ifndef __GETSABRPRICE_H_
    #define __GETSABRPRICE_H_
     
    extern "C" void __stdcall InitSABRForward(long& p_lSize, long* p_lDate, long& p_lStart, long& p_lMat, double& p_fForward, double& p_fAlpha, double& p_fBeta, double& p_fNu, double& p_fRho, long& p_lStep, bool p_bBSActive) ;
     
    extern "C" void __stdcall GetForwardBSOption(long& p_lSize, double* p_pValueSABR, double* p_pValueBS = NULL) ;
     
    extern "C" void __stdcall GetSABRForward(long& p_lSize, double* p_pValueSABR ) ;
     
    #endif
    A faire de même dans tes cpp

Discussions similaires

  1. Compiler une bibliothèque avec Visual Studio
    Par hibou107 dans le forum Débuter
    Réponses: 5
    Dernier message: 07/09/2011, 10h59
  2. Générer un exe d'une appli PDA avec Visual studio 2005
    Par ___jul dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 17/01/2008, 22h56
  3. compilation OpenMASK avec visual studio 2005
    Par twix24 dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 01/10/2007, 22h45
  4. Compilation avec Visual Studio 2005
    Par LordBob dans le forum MFC
    Réponses: 3
    Dernier message: 14/04/2006, 20h14

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