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