Bonjour
J'essaye de créer une solution sous Visual Studio 2003 qui crée un XLL pouvant etre utilisé sous Excel.
Pour cela, j'utilise XLW (wrapper C++) que j'ai trouvé sur le net (
http://xlw.sourceforge.net).
Si je compile la version 1.2.2 tout fonctionne parfaitement.
Je prends donc le projet du zip ecrit en Visual 6. VS2003 me le convertit en solution et tout fonctionne très bien à la compilation.
Cette solution contient deux sous-projets :
XLW qui est le wrapper
Xlwexample qui est l'exemple d'utilisation (subtil hein.. !)
Dans ce dernier on a ce genre de code (
xlwExample.cpp)
Code :
extern"C"{
LPXLOPER EXCEL_EXPORT xlCirc(XlfOper xlDiam){
EXCEL_BEGIN;
// Converts d to a double.double ret=xlDiam.AsDouble();
// Multiplies it.
ret *= 3.14159;
// Returns the result as a XlfOper.return XlfOper(ret);
EXCEL_END;
}}
Je rajoute donc un projet (j'arrive au problème.) qui servira à fournir les fonctions de calcul dont par exemple ce fichier
(
test.h)
Code :
double f1(double x){return(x*x-1) ;
}
Dans le fichier
xlwexample.cpp je rajoute donc la ligne suivante avant la ligne extern « c »
Tout fonctionne parfaitement lorsque je lance Excel et le XLL, il me calcule bien la circonférence.
Si maintenant je transforme mon fichier
test.h en
Code :
#include <math.h>double f1(double x){return(x*x-1) ;
}
double f2(double x){return exp(x);
}
Et que je transforme le fichier
xlwExample.cpp en
Code :
extern"C"{
LPXLOPER EXCEL_EXPORT xlCirc(XlfOper xlDiam){
EXCEL_BEGIN;
// Converts d to a double.double ret=xlDiam.AsDouble();
// Multiplies it.//ret *= 3.14159;
ret = f2(4); /////////////!!!!!!!!!! C'est ici qu'est le changement !!!!!!!!!!!!///// Returns the result as a XlfOper.return XlfOper(ret);
EXCEL_END;
}}
A la compilation tout fonctionne bien, par contre à l'execution rien ne fonctionne. Il me dit que le fichier XLL n'est pas un Add-in Valide => ca marche pas.
J'avoue que j'ai un peu du mal à comprendre .
Si qqun sait m'aider ?
Merci
DH
PS : désolé pour la longue tartine :-)