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
Voici le code pour ma classe C++/CLI
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
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); } }; }
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
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
Partager