C# JNI可以与c/c++/c以外的其他语言交互吗

C# JNI可以与c/c++/c以外的其他语言交互吗,c#,java-native-interface,programming-languages,C#,Java Native Interface,Programming Languages,我想知道,正如标题中所说: 我可以直接使用JNI将java代码与c/c++/objective c以外的语言连接起来吗 例如,如果我想从java代码中使用Csharp, 我是否必须以标准方式使用JNI,通过调用c/c++方法,然后从那里以某种方式调用csharp方法 或者有没有一种方法可以使用JNI直接调用Csharp代码,这意味着它将拥有一些类似于在c/c++中实现JNI.h的库 我不是在寻找其他关于如何连接java/Csharp的解决方案,只是想知道JNI是否有可能。但也有间接的,即JNA而

我想知道,正如标题中所说: 我可以直接使用JNI将java代码与c/c++/objective c以外的语言连接起来吗

例如,如果我想从java代码中使用Csharp, 我是否必须以标准方式使用JNI,通过调用c/c++方法,然后从那里以某种方式调用csharp方法

或者有没有一种方法可以使用JNI直接调用Csharp代码,这意味着它将拥有一些类似于在c/c++中实现JNI.h的库


我不是在寻找其他关于如何连接java/Csharp的解决方案,只是想知道JNI是否有可能。但也有间接的,即JNA而不是直接的JNI

点是JNI至少需要一个方法,通常有几种方法专门处理JNI参数传递,即使在C++中,如果你能做到这一点,也需要C连接。 JNA将是一种提供这种粘合逻辑的方法,它类似于.net中的PINVOKE,但它将是一种间接方法。例如,您需要加载一个用csharp编写的库,或者设法以某种方式将csharp代码传递给解释器并获得结果,而您编写的csharp库可能正是这样做的,制作一个jni桥接器,公开一些函数,允许您上传将通过.net解释器执行的csharp脚本,并通过jni传回结果


我记得使用了一个支持COM的JNI网桥,您可以使用COM与一些用任何语言编写的库进行交互,但这又会增加另一层间接寻址。祝你好运

嗨,亚历山大,谢谢你的回答。JNA看起来是个不错的选择,我刚开始读过它,可能会重新考虑重构,而不是JNI,而我使用的是C++的java代码。无论如何,关于csharp,你听说过jni4net吗?这似乎是一个很好的解决方案,但我刚刚读到关于它的信息,我还没有听说过这个。这似乎是一个非常专门的解决方案,可以完全实现您想要的功能,并且具有双向性,例如,您可以调用csharp代码,而csharp代码反过来可以调用java代码。我建议,如果您决定使用它,您可以为主要功能制作一系列小的测试用例,因为实现不完全的可能性很小。但似乎值得一试。顺致敬意,