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
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 ////////////////////////////////////////////////////////////////////// // // 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
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
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] ; } }
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
Partager