|
Started by Esteban BERNARD, May, 21 2017 2:51 AM - 5 replies |
| |
| | | |
|
| |
Registered member 24 messages Popularité : +2 (2 votes) |
|
Posted on May, 21 2017 - 2:51 AM |
Bonjour à vous,
après avoir développé un petit bout de code en c++ je l'ai encapsulé dans un assemblage .NET, cependant je me retrouve face à un problème lors du passage de paramètres. Tant qu'il s'agit de passer des entiers tout va bien. Toutefois certaines de mes fonctions c++ prennent comme paramètres des variables de type std::string et elles sont reconnues comme "objet dynamique" dans le constructeur de la fonction par windev. Lorsque je passe une chaîne de caractère de windev j'obtiens donc une erreur me disant qu'il n'existe aucun prototype correspondant à ces paramètres. Ma question est donc la suivante, comment puis-je passer des chaines en paramètres à mon assemblage pour que cela correspondent au type std::string ?
Merci d'avance pour votre aide,Message modified, May, 21 2017 - 2:52 AM |
| |
| |
| | | |
|
| | |
| |
Posted on May, 22 2017 - 1:44 PM |
Bonjour,
avec un nom pareil, on dirait que tu utilise le typ string de la classe STD.
Si c'est bien ca, du coté windev, il faut intégrer l'assemblage contenant la classe STD, en déclarer un objet, puis utiliser son type string.
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
A votre disposition : WXShowroom.com, WXReplication (open source) et maintenant WXEDM (open source)
Plus d'information sur http://fabriceharari.com
Le 5/20/2017 à 6:51 PM, Esteban BERNARD a écrit :
Bonjour à vous,
après avoir développé un petit bout de code en c++ je l'ai encapsulé dans un assemblage .NET, cependant je me retrouve face à un problème lors du passage de paramètres. Tant qu'il s'agit de passer des entiers tout va bien. Toutefois certaines de mes fonctions c++ prennent comme paramètres des variables de type std::string et elles sont reconnues comme "objet dynamique" dans le constructeur de la fonction par windev. Lorsque je passe une chaîne de caractère de windev j'obtiens donc une erreur me disant qu'il n'existe aucun prototype correspondant à ces paramètres. Ma question est donc la suivante, comment puis-je passer des chaines en paramètres à mon assemblage pour que cela correspondent au type std::string ?
Merci d'avance pour votre aide, |
| |
| |
| | | |
|
| | |
| |
Registered member 24 messages Popularité : +2 (2 votes) |
|
Posted on May, 23 2017 - 12:06 AM |
Tout d'abord merci pour votre réponse.
En effet, j'utilise le type string propre à l'espace de nom std. Cependant je n'ai aucune idée de comment trouver un assemblage l'encapsulant. Dans ce cas est-ce que quelqu'un n'aurait pas une idée pour faire l'inverse, passer une chaîne windev vers un programme c++ d'un assemblage et dans ce cas quel type de paramètre préciser dans le programme c++ ? |
| |
| |
| | | |
|
| | |
| |
Registered member 962 messages Popularité : +183 (185 votes) |
|
Posted on May, 23 2017 - 7:14 AM |
| |
| |
| | | |
|
| | |
| |
Registered member 24 messages Popularité : +2 (2 votes) |
|
Posted on May, 25 2017 - 6:00 PM |
Oui Merci, c'est en effet c'est que je voulais faire, j'avais également trouvé cette information avant de voir votre message. Il me reste désormais à trouver le même genre de conversion pour les tableaux vers vector, et point vers point |
| |
| |
| | | |
|
| | |
| |
Registered member 24 messages Popularité : +2 (2 votes) |
|
Posted on May, 31 2017 - 3:10 AM |
Bon alors après quelques recherche j'ai réussi à faire la liaison entre vector et system.array pour passer des tableaux d'int ou de float entre mon code c++/cli et mon code windev cependant pour passer des tableaux de System.Drawing.Point impossible.
Je m'explique,
voilà en gros mon code pour le remplissage et l'initialisation de mon tableau :
array< System::Drawing::Point >^ centers; centers = gcnew array< System::Drawing::Point >(greatAxis.size()); for (int i = 0; i < greatAxis.size(); i++){ centers[i] = System::Drawing::Point(0,0); }
et voilà mon getter :
array< System::Drawing::Point >^ SegImg::getManagedCenters(){ return centers; }
Et dans windev j'essaie de récupérer le résultat comme suit :
p est un tableau de n System.Drawing.Point = t:getManagedCenters()
Toutefois lorsque je regarde le contenu du tableau j'obtiens seulement des objets non initialisés.
Même chose lorsque j'essaye directement de créer un objet System.Drawing.Point et de l'initialiser dans windev :
d est un System.Drawing.Point(0,0)
Merci d'avance,Message modified, May, 31 2017 - 3:12 AM |
| |
| |
| | | |
|
| | | | |
| | |
|