Bonjour,
contexte :
j'ai compilé une dll c++ (utilisant les dll OpenCV). dans cette dll je compile 3 classes.
j'ai ensuite créer une classe c++/cli pour wrapper cette dll C++ (et ensuite l'utiliser dans une appli C#)
j'ai créer un projet de test en c++/cli pour tester l'importation de la dll c++ et ma classe .
lors des tests, lorsque je sors de ma dll c++ les objets internes a mes classes sont nettoyés.
je suis bien rouillé en c++ et débutant en c++/cli, j'ai du rater quelque chose d'essentielle, pourriez-vous m'aider svp?
une des classe c++
la classe wrapper 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 #define DllExport __declspec( dllexport ) class DllExport RAD_Model{ private: Mat Model_descriptors; vector<KeyPoint> Model_keypoints; vector<int> Index_Model; vector<string> SubModel_Name; GpuMat Model_descriptors_GPU; GpuMat Model_keypoints_GPU; int NbModels; int Complet; public : RAD_Model::RAD_Model(const char* path_Model, int Mode, bool GPU); RAD_Model::RAD_Model(); RAD_Model::RAD_Model(RAD_Model const & toCopy); };
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 public ref class BWorker { private: WorkerBunny* Worker; RAD_Params* Params; RAD_Model* Model; public: BWorker(System::String ^Path_Model) { string stdPath_Model = conversion::convertStringToStlString(Path_Model); Model = &RAD_Model(stdPath_Model.c_str(), 0, true); /* le code s'execute normalement, les variable interne sont alloué et le code semble aller au bou (affectation de la variable Complet a 1). cependant, lorsque je debug en pas a pas je vois qu'en sortant du constructeur je passe par les destrcuteur de tous mes objets interne a ma classe RAD_Model résumer : ces variables de ma classe RAD_Model sont nettoyées Mat Model_descriptors; vector<KeyPoint> Model_keypoints; vector<int> Index_Model; vector<string> SubModel_Name; GpuMat Model_descriptors_GPU; GpuMat Model_keypoints_GPU; celle ci sont bien a la valeur attendu: int NbModels; int Complet; */ Params = &RAD_Params(true); } }
merci pour votre attention!
Partager