Excel Wrapper XLW + XLL + <math.h> fonctionne pas
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
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:
1 2 3 4 5
|
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:
1 2 3 4 5 6 7 8 9 10 11
|
#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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
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); /////////////!!!!!!!!!! Cest ici quest 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 :-)