[ DLL C++ ] Cr�ation et utilisation d'une DLL de classe c++
Bonjour � tous.
Je suis confront� � un probl�me de dll depuis quelque temps. Je cherche � cr�er une dll sous visual studio.
Je doit faire un code g�n�rique en code c++ non manag� que je doit ensuite importer dans un projet c++ manag�
Pour ce faire, voila ce que j'ai fait :
Je cr�e donc un projet win32 --> dll -> projet vide.
Je cr�e une classe tr�s simple :
Voici mon fichier Calculette.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
#pragma once
#include <iostream>
#include <string>
using namespace std;
extern "C" class __declspec(dllexport) Calculette
{
private:
double PI;
public:
Calculette(void);
~Calculette(void);
int addition(int nbA, int nbB);
double addPI(double nb);
int soustraction(int nbA, int nbB);
}; |
Voici mon fichier Calculette.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
#include "Calculette.h"
Calculette::Calculette(void)
{
this->PI = 3.14;
}
Calculette::~Calculette(void)
{
}
int Calculette::addition(int nbA, int nbB)
{
return nbA + nbB;
}
double Calculette::addPI(double nb)
{
return nb + this->PI;
}
int Calculette::soustraction(int nbA, int nbB)
{
return nbB - nbA;
} |
Ensuite j'ajoute � ma solution un nouveau projet de type console CLR ( Code manag� ).
Je copie la .dll ainsi que le fichier .lib g�n�r� par la compilation de ma dll � la source du projet.
Ensuite je place le code suivant :
Voici le fichier TestConsoleClass.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
// TestConsoleClass.cpp : main project file.
#include "stdafx.h"
using namespace System;
// Importation des éléments de ma DLL
#pragma comment (lib, "FirstClassDll.lib")
extern "C" class __declspec(dllexport) Calculette;
int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Lancement du programme");
// Calcul simple et écriture dans la console du résulat
Calculette calc = new Calculette();
int resultat = calc->addition(2,3);
Console::WriteLine(resultat);
Console::ReadLine();
return 0;
} |
J'essai ensuite de compiler le programme et voila ce que j'obtient comme erreur :
1 error C2079 'calc' uses undefined class 'Calculette'
2 error C2512 'Calculette': no appropriate default constructor available
3 error C2227 left of '->addition' must point to class/struct/union/generic type
Je pense que le probl�me viens du faite qu'il n'importe pas la classe comme il faudrait. J'ai vue sur internet apr�s plusieurs recherche qu'il y a plusieurs solutions pour utiliser les dll. J'ai choisi d'opter pour la solution des __declspec(dllexport) qui est plus simple � impl�menter.
Je vous remerci d'avance pour toute l'aide que vous pourrez m'apporter.