Ayant mon propre code Java J'utilise C# pour appeler du code non managé qui appelle (via JNI) le code java. J'utilise JNI depuis que je dois assurer:Appelez mon propre code Java de C#
- la capacité que le code Java fonctionnera sur réel JVM et non pas sur une machine virtuelle .NET
- la possibilité de joindre à la machine virtuelle pour le débogage (IKVM ne « soutenir nt il)
- J'ai besoin solution
- libre les solutions libres actuelles ne sont pas applicables (par exemple IKVM)
Quoi qu'il en soit, ma question est de savoir comment puis-je gérer les chaînes passées entre ces couches de la meilleure façon sans fuites. que je fais quelque chose comme:
[DllImport(@"MyDll.dll")]
public extern static void receive_message(string receDest, StringBuilder response);
Cela signifie que je suis allocation de la mémoire pour la réponse dans le code managé. Je veux éviter cela car je ne connais pas la longueur de la réponse. Comment puis-je écrire une méthode appropriée JNI qui va allouer le bon tampon pour le code managé sans fuites. Le code JNI doit être thread-safe.
Des suggestions?
Merci,
Guy
1. JNBridge n'est pas gratuit. 2. Je n'ai pas compris comment je peux configurer la JVM. 3. Dans leurs exemples, vous devez charger la JVM par vous-même (en appelant le Java directement) Merci, Guy – Guy
Je comprends que JNI n'est pas gratuit. Je n'ai pas vu cela comme une exigence. Combien vaut votre temps? – Cheeso
+1 pour la suggestion de rester simple en utilisant des sockets pour communiquer entre les deux processus. – Mark