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:
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:
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:
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
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.
Compilation dll avec visual studio 2005
Voici comment j'ai déclaré les fonctions de la dll en vba
Code:
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) |