Char* to String C# - C#/.NET managed - Programmation
Marsh Posté le 10-11-2006 à 20:54:58
ReplyMarsh Posté le 10-11-2006 à 23:17:16
moi23372 a écrit : passer par référence, tu as bien fait un "ref monString" ? |
ça n'a strictement rien à voir....
mrcyprom>> déjà, il faut coder en unsafe, car il va falloir faire usage de pointeurs. ensuite, il faut connaitre l'équivalent du type 'char' de C++ en C# : c'est le type 'sbyte'.
donc, en admettant que ta fonction C++ retourne un char*, tu peux la récupérer en C# comme ceci :
Code :
|
c'est un code que j'ai pondu pour mon plugin winamp (qui possède un SDK en C, bonjour le marshalling), et qui fonctionne bien (tu peux essayer mon plugin pour t'en convaincre )
Marsh Posté le 11-11-2006 à 09:02:07
Je te remerci pour cette réponse. En faite j'aivais réussi à renvoyer mon char* dans mon programme C# (utilisation de unsafe), il me manquait le moyen de convertir mon char*. Et le sbyte* semble résoudre le problème. Encore merci.
Marsh Posté le 21-11-2006 à 16:29:12
Tient Harko, question qui n'a rien à voir : c'est chiant à faire un plug-in winamp ?
Genre rajouter un pti peu d'interface, histoire de faire ma propre média library
Marsh Posté le 21-11-2006 à 22:54:15
en C# c'est un peu chiant oui, vu que l'API de winamp est en C, y'a plein de conversions de données entre managé et non managé à faire, sans oublier les pointeurs qu'il faut déclarer en fixe, pour éviter que le garbage collector ne les change de génération
Marsh Posté le 10-11-2006 à 11:45:45
Bonjour tout le monde,
J'utilise dans mon aplli C# (Winform) une DLL C++ créer par mes soins. Un problème se pose lorsque je souhaite récupérer d'une fonction contenue dans ma DLL un buffer . J'ai déjà essayé pas mal de choses pour arriver à mes fins. Passer une String C# en argument et en référence à la DLL (coté DLL la fonction à une std::string en paramètre) mais aucune modification n'est faite sur cette String. J'ai aussi éssayer de récupérer la string par valeur de retour mais là j'ai des problèmes d'incompatibilité (même avec Marshal). J'en arrive donc à essayer de retourner un Char*.
Le problème c'est comment convertir dans mon code C# ce char* retourné en string pour pouvoir l'utilisé ???? Si certain d'entre vous ont la solution merci de m'en faire part.
PS: Si il existe une autre façon de faire, elle est bien venue. La majorité des exemples sur le net ne m'ont pas permis d'y parvenir.
---------------
Cordialement.