re-Bonjour

Je suis entrain de wrapper une dll c++ pour l'utiliser sur une application C#.
J'utilise du c++/cli pour faire le passage.

J'ai suivi les conseils de la FAQ sur la conversion de chaine de caractères. Cependant j'ai des messages d'erreur à la compilation que je ne comprend pas

J'ai déclaré en private : Class1 *instance;
et dans le constructeur de mon wrapper
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
WrapperClass1()
{
    instance = gcnew Class1();
}
Cas 1 : prototype de la fonction C++ dans le h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
__declspec(dllexport) string getLabel(int ID);
ci joint ma fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
String^ getLabel(int ID) 
		{ 
			std::string result("test");
 
			result = instance->getnetCatLabel(catID);
			System::String ^s = gcnew String(result.c_str());
			return s;
		}
L'erreur sur "result = instance->getnetCatLabel(catID);" est la suivante :
error C2679: binary '=' : no operator found which takes a right-hand operand of type 'System::String ^' (or there is no acceptable conversion)
J'ai du mal à saisir mon erreur, Avez vous une idée pour résoudre ce problème.

Cas 2 :
prototype de la fonction C++ dans le h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
__declspec(dllexport) int saveData(char* filename);
ci joint ma fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
int saveData(System::String ^filename){
 
		char * chaineChar;
		pin_ptr<const wchar_t> wch = PtrToStringChars(filename);
		int taille = (filename->Length+1) * 2;
		chaineChar = new char[taille];
		int t = WideCharToMultiByte(CP_ACP, 0, wch, taille, NULL, 0, NULL, NULL); 
		WideCharToMultiByte(CP_ACP, 0, wch, taille, chaineChar, t, NULL, NULL); 
		 int result = 0;
		 result = instance->saveData(chaineChar);
		 chaineChar=NULL;
		 return result;
		}
J'ai donc cette erreur sur " result = instance->saveData(chaineChar);"
error C2664: 'WrapperClass1::Class1::saveData' : cannot convert parameter 1 from 'char *' to 'System::String ^'"
Je ne comprends pas pourquoi cette erreur. Quelqu'un peut m'expliquer?

Merci de votre aide...