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
Cas 1 : prototype de la fonction C++ dans le h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 WrapperClass1() { instance = gcnew Class1(); }
ci joint ma fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 __declspec(dllexport) string getLabel(int ID);
L'erreur sur "result = instance->getnetCatLabel(catID);" est la suivante :
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; }
J'ai du mal à saisir mon erreur, Avez vous une idée pour résoudre ce problème.error C2679: binary '=' : no operator found which takes a right-hand operand of type 'System::String ^' (or there is no acceptable conversion)
Cas 2 :
prototype de la fonction C++ dans le h:
ci joint ma fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 __declspec(dllexport) int saveData(char* filename);
J'ai donc cette erreur sur " result = instance->saveData(chaineChar);"
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; }
Je ne comprends pas pourquoi cette erreur. Quelqu'un peut m'expliquer?error C2664: 'WrapperClass1::Class1::saveData' : cannot convert parameter 1 from 'char *' to 'System::String ^'"
Merci de votre aide...
Partager