Utilisation d'une classe C++ dans une classe C#
Bonjour,
J'ai besoin d'utiliser une classe réalisé en C++ dans un programme C#. Cette classe se trouvant dans une bibliothèque.
Je pense faire un wrapper entre cette classe C++ et mon aplication en C#. Je pense utilisé une classe codé en C++/CLI qui fait l'interface entre le C++ natif et le C#
Est ce que c'est une sage décision ? Où y a t il une solution plus simple et performante ?
L'idée que j'ai, c'est qu'à travers la classe C++/CLI faire une conversion de donnée de l'un vers l'autre.
Voici le code de ma classe C++ native
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 30 31 32 33 34 35 36 37 38
|
namespace App
{
class Tart
{
public:
DLLEXP Tart ();
DLLEXP Tart (const std::string& path) { read(path); }
DLLEXP Tart (std::ifstream& ifs);
DLLEXP Tart (const SvmDlibWrapper& orig);
DLLEXP Tart& operator=(const Tart& orig);
DLLEXP void save(const std::vector<std::vector<float> >& vectors, const std::vector<float> labels);
DLLEXP void scorePerClass(const std::vector<float>& v, std::vector<std::pair<double, float>>* scores) const;
DLLEXP double load(const std::vector<float>& v) const;
DLLEXP void read(std::istream& is);
DLLEXP void read(const std::string& path) { Readable::read(path); }
DLLEXP void write(std::ostream& os) const;
DLLEXP void write(const std::string& path) { Writable::write(path); }
};
} |
Voici le code pour ma classe C++/CLI
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
|
namespace App
{
class wTart
{
public:
DLLEXP wTart();
DLLEXP wTart (const std::string& path) { read(path); }
//DLLEXP Tart& operator=(const Tart& orig);
DLLEXP void save(const std::vector<std::vector<float> >& v, const std::vector<float> labels);
DLLEXP void scorePerClass(const std::vector<float>& v, std::vector<std::pair<double, float>>* scores) ;
DLLEXP double load(const std::vector<float>& v);
DLLEXP void read(String^ path) ;
DLLEXP void write(String^ path);
private :
app::Tart objTart;
};
} |
Comment puis je convertir le format de donnée des types suivant :
- const std::vector<std::vector<float> >
- const std::vector<float>
- std::vector<std::pair<double, float>>*
Je vous remercie pour votre aide