Plantage Excel lors d'appel fonctions perso C++-COM

Plantage Excel lors d'appel fonctions perso C++-COM - C++ - Programmation

Marsh Posté le 05-08-2005 à 12:24:57    

Bonjour,
 
Nouveau topic today
 
alors Les personnes m'ayant aidé cette semaine sur ce forum ont pu voir que j'utilisais libraires c++ pour créer objets com pouvant être utilisés par la suite dans Excel.
 
J'ai fait des essais pour des exemples basiques...Cela marche
dans Excel=super
 
Par contre, j'ai une fonction C++ un plus costaid qui marche dans l'éxécutable sous visual (cela renvoie un vecteur de doubles)
 
Evidemment, j'ai converti tout ce qui fallait dans mon outil COM
du style
 

Code :
  1. EXCEL_EXEC(CDSOptionCalibration)
  2. //void ExcelBlackScholes::exec(VariantMatrix &commandOutputs)  
  3. {
  4.   SET_DOUBLE_ARG(CDS_Recovry)
  5.   SET_DOUBLE_ARG(CDS_frequency)
  6.   SET_VECTOR_ARG(vvMaturities)
  7.   SET_VECTOR_ARG(vvSpreads)
  8.   SET_VECTOR_ARG(vvObs_Times)
  9.   SET_VECTOR_ARG(vvObs_Yields)
  10.   SET_DOUBLE_ARG(CDS_Discretisation)
  11.   SET_DOUBLE_ARG(CDS_Maturity)
  12. QuantLib::Vector<double> res,
  13.   maturities(vvMaturities.size()),
  14.   spreads(vvSpreads.size()),
  15.   obs_times(vvObs_Times.size()),
  16.   obs_yields(vvObs_Yields.size());
  17. vvMaturities.asDoubleVector(maturities.begin(), maturities.end());
  18. vvSpreads.asDoubleVector(spreads.begin(), spreads.end());
  19. vvObs_Times.asDoubleVector(obs_times.begin(), obs_times.end());
  20. vvObs_Yields.asDoubleVector(obs_yields.begin(), obs_yields.end());
  21. res=CDS_Option_Calibration(CDS_Recovry,CDS_frequency,maturities,spreads,obs_times,obs_yields,CDS_Discretisation,CDS_Maturity);
  22.   commandOutputs = VariantMatrix(10,1);   
  23.   commandOutputs(0,0).setDouble(10.0);
  24. }


 
Pa sd'erreur de compil-->DLL crée
MAIS quand j'appelle ma fonction dans excel cela me ferme mon Excel
donc il doit y avoir un gros souci qu'excel n'aime pas.
 
AVez vous une idée?
 
merci

Reply

Marsh Posté le 05-08-2005 à 12:24:57   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed