簡體   English   中英

JNI是否可以與c / c ++ / objective c之外的其他語言進行交互

[英]Can JNI Interact with other languages than c/c++/objective c

我想知道,在標題中:我可以使用JNI來彌補java代碼比C / C ++ / Objective C的其他語言, 直接

例如,如果我想從我的Java代碼中使用Csharp,我是否必須通過調用ac / c ++方法並以某種方式調用csharp方法的方式,以標准方式使用JNI?

還是有一種方法可以使用JNI直接調用Csharp代碼(這意味着它將具有類似於在c / c ++中實現jni.h的庫)?

我不是在尋找有關如何橋接java / Csharp的其他解決方案,只是想知道它是否可以與JNI一起使用。

AFAIK,沒有直接方法。 但是有間接的,即JNA而不是直接的JNI。

關鍵在於,JNI需要(至少)需要一種專門為處理JNI參數傳遞而編寫的方法(通常是幾種方法),並且需要C鏈接(即使您設法用C ++甚至csharp編寫) 。

JNA是提供這種膠合邏輯的一種方法(它在.net中類似於PINVOKE),但這將是一種間接方法。 您可能需要加載例如用csharp編寫的庫,或者設法將csharp代碼傳遞給解釋器(以某種方式)並獲取結果,也許您編寫的csharp庫可以做到這一點,並創建一個jni橋來公開一些允許您上傳將通過.net解釋器執行的csharp腳本,然后通過jni返回結果。

我記得使用支持COM的JNI橋,您可以使用COM與以某種語言編寫的(某些)庫進行交互,但是話又說回來,這將增加另一層間接性。 祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM