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 : 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
 
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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
 
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 :-)