[英]Why is preprocessor usage less common in languages other than C/C++/ObjC?
[英]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.