Passer le pointeur de caractère de C # à la fonction c ++

Je suis coincé dans la mise en œuvre c #, car je suis assez novice. Le problème est que je souhaite passer un ‘pointeur’ (ayant de la mémoire) à partir du code c # afin que mon application c ++ puisse copier le tampon pchListSoftwares dans pchInstalledSoftwares. Je ne suis pas capable de comprendre comment passer le pointeur du côté c #.

code c ++ natif (MyNativeC ++ DLL.dll)

void GetInstalledSoftwares(char* pchInstalledSoftwares){ char* pchListSoftwares = NULL; ..... ..... pchListSoftwares = (char*) malloc(255); /* code to fill pchListSoftwares buffer*/ memcpy(pchInstalledSoftwares, pchListSoftwares, 255); free(pchListSoftwares ); } 

Passer une simple ‘chaîne’ ne fonctionne pas …

Implémentation C #

 [DllImport("MyNativeC++DLL.dll")] private static extern int GetInstalledSoftwares(ssortingng pchInstalledSoftwares); static void Main(ssortingng[] args) { ......... ......... ssortingng b = ""; GetInstalledSoftwares(0, b); MessageBox.Show(b.ToSsortingng()); } 

Toute aide est grandement appréciée …

Essayez d’utiliser un SsortingngBuilder

 [DllImport("MyNativeC++DLL.dll")] private static extern int GetInstalledSoftwares(SsortingngBuilder pchInstalledSoftwares); static void Main(ssortingng[] args) { ......... ......... SsortingngBuilder b = new SsortingngBuilder(255); GetInstalledSoftwares(0, b); MessageBox.Show(b.ToSsortingng()); } 

Mon erreur … supprimer 0 dans l’appel à GetInstalledSoftwares(0, b); .

Essayez de changer la ligne de prototype en:

 private static extern int GetInstalledSoftwares(ref ssortingng pchInstalledSoftwares); 

(Envoyez la chaîne par référence).