[英]Call my own Java code from C#
拥有自己的Java代码我正在使用C#调用一些非托管代码来调用(通过JNI)java代码。 我正在使用JNI,因为我需要确保:
无论如何,我的问题是如何以最佳方式管理在这些层之间传递的字符串而不泄漏。 我做的事情如下:
[DllImport(@"MyDll.dll")]
public extern static void receive_message(string receDest, StringBuilder response);
这意味着我正在为托管代码中的响应分配内存。 我想避免这种情况,因为我事先并不知道响应长度。 如何编写JNI适当的方法,为托管代码分配正确的缓冲区而不会泄漏。 JNI代码应该是线程安全的。
有什么建议么?
谢谢,
家伙
您可能有兴趣尝试使用IKVM.NET在.NET CIL中转换Java字节码代码。
您基本上需要从.NET代码远程调用java程序。
使用您当前的技能组合,我建议您在Java机器中创建Web服务 - 这在Java 6中相对容易 - 并且基于WSDL在.NET程序中创建客户端。
这可能是当今技术最干净的解决方案。
如果由于某种原因不够好,那么请添加到您的问题中。
盖伊 - 关于切索的回应,以及你对它的回应:
JNBridgePro允许JVM自动启动并在.NET进程内运行(除了显式启动它之外)。 请参阅文档中讨论的“共享内存”通信机制。
JNBridgePro允许您附加Java调试器,即使JVM在.NET进程内运行也是如此。 有关详细信息,请联系support@jnbridge.com,以及有关配置JVM的详细信息。
对它不是免费的做不了多少,但无论如何都要花点时间来检查它。
披露:是的,我和JNBridge在一起。
我想你可以使用jni4net作为桥库。 或者您可以查看源代码并获取一些想法(LGPL / GPL)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.