Bon j'ai avanc� un peu dans mon probl�me ... Mais c'est toujours pas �a.
D�j� j'ai chang� d'environnement : j'utilise d�sormais Visual C++ 2005 Express (gratuit et d�bugger g�nial pour utiliser la DLL en m�me temps qu'Excel). Mais �a ne change rien au probl�me. Les d�clarations changent un petit peu, c'est tout.
En fait on n'est plus oblig� d'utiliser extern "C" et __stdcall. Ce dernier choix se fait dans les options du compilateur. Il suffit �galement d'ajouter un fichier de d�finition des fonctions � exporter.
Il suffira juste d'utiliser
# define DLLEXPORT __declspec (dllexport)
pour exporter une fonction ou une classe.
J'ai trouv� une petite parade pour pouvoir utiliser un objet. Voici le code de ma DLL :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class DLLEXPORT Interface {
public:
Interface();
virtual ~Interface() = 0;
virtual const int getX() const = 0;
};
class DLLEXPORT C : public Interface {
private:
int x;
public:
C();
virtual ~C();
virtual const int getX() const;
}; |
avec dans mon .cpp le code suivant :
1 2 3
| const int C::getX() const {
return x;
} |
Sous VB, j'obtiens bien une valeur de x (al�atoire vu que je ne l'ai pas d�finie).
Maintenant, en ajoutant cette m�thode :
const int setXToNewObj(C*, int);
en la d�finissant ainsi :
1 2 3 4
| const int C::setXToNewObj(C* Adress, int _x) {
Adress->setX(_x);
return Adress->x;
} |
et un constructeur de l'objet (oui je sais c'est pas g�nial mais bon ...) d�finit de cette fa�on :
1 2 3
| C* C::getNewObjAdress() {
return (new C);
} |
Je peux maintenant utiliser mon objet sous VB mais c'est vraiment pas g�nial au niveau synthaxe. Surtout je ne peux pas utiliser ma m�thode setX() originale. Donc je suis oblig� de re�crire toute mes m�thodes que je souhaite exporter !!! Je pense qu'il existe une mani�re de faire �a beaucoup plus facilement ... mais laquelle ?
Partager