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++
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);
 
 
 
};
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
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!