Erreur sur chaîne de caractères
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:
1 2 3 4 5
|
WrapperClass1()
{
instance = gcnew Class1();
} |
Cas 1 : prototype de la fonction C++ dans le h:
Code:
1 2
|
__declspec(dllexport) string getLabel(int ID); |
ci joint ma fonction :
Code:
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 :
Citation:
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:
1 2
|
__declspec(dllexport) int saveData(char* filename); |
ci joint ma fonction :
Code:
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);"
Citation:
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...