2013-04-21 64 views
1

我正在嘗試使用SWIG來生成我的JNI。我已經有了可以工作的JNI代碼,但是它是手寫的,並且越來越複雜和難以維護。使用SWIG生成的JNI可以從C代碼中調用java方法嗎?

我的一些在C函數是從Java調用,然後他們叫Java中(可能這不是一個好主意,但它現在正在爲)一些方法...

我想知道SWIG有可能生成這種JNI代碼?

+0

您的意思是生成使用FindClass,GetMethodID,CallVoidMethod的代碼的工具嗎? – 2013-04-21 17:52:21

+0

@TomBlodget是的,類似的東西。 – ddss 2013-04-21 21:04:44

+0

@TomBlodget或至少生成的代碼,使我JNIEnv,jclass和工作對象,沒有從包裝文件手動轉發... – ddss 2013-04-21 21:11:11

回答

2

是的,它應該是可能的。

以下語言在swig-1.3.6及以上版本中也受支持: Java JDK 1.1及更新版本。

UPDATE

http://www.swig.org/compat.html

更多的信息在這裏引用欲瞭解更多信息從C調用的Java ++看看:http://www.swig.org/Doc1.3/Java.html#java_directors

+0

使用SWIG從Java調用C生成JNI代碼很容易,我已經完成了。但我的問題是另一個方向,從C函數調用Java方法。所以這並不能解決我的問題。 – ddss 2013-04-21 17:14:03

+1

@ddss我已經用另一個鏈接更新了我的答案,我希望您會發現有用。 – 2013-04-21 19:03:22

+0

感謝您的幫助,但這是C++,我的代碼是純c。 – ddss 2013-04-21 21:04:12

0

我知道這種類型的唯一的JNI包裝是JaceJunC++ion,它們都是基於C++的,所以不適合您的需求。