J'essaie d'utiliser une classe C# dans un projet C++ -CLI, mais Visual Studio me permet seulement de déclarer un handle (^) à un objet C# dans une portée locale, juste à l'intérieur d'une fonction. La seule façon je l'ai eu de travail a été déclaré un pointeur global à une poignée:Comment créer un handle global en C++ - CLI
SUTAdapter::Form1^ *ptForm1;
Mais si je crée un objet dans une fonction et donner son adresse au pointeur global:
SUTAdapter::Form1^ form1;
form1 = gcnew SUTAdapter::Form1();
ptForm1 = &form1;
(*ptForm1)->incCounter(0);
Lorsque la fonction se termine et j'essaie d'utiliser la fonction incCounter dans une autre fonction C++ - CLI, l'objet semble avoir disparu (le débogueur dit ceci == null). Existe-t-il un moyen d'avoir un handle global d'un code C# dans C++ - CLI? Je suppose que les poignées globales sont interdites pour une raison que je ne comprends pas, mais je n'ai pas d'idées et j'ai besoin de cela. Je vous remercie.
modifier:
*ptForm1 = gcnew SUTAdapter::Form1();
une exception Donne référence null. Pourquoi?
Il déclenche une exception de référence nulle. – Hiperi0n
Ah oui, maintenant que vous le mentionnez c'est assez évident. Je suppose que vous devrez l'initialiser avec une référence Form 1 en premier, mais encore une fois je n'ai pas essayé cela et vous semblez avoir trouvé la bonne solution de toute façon. –