2017-08-28 33 views
-2

是否可以從java調用C代碼(已經生成了py Beremiz編輯器)? 我不想編輯生成的C代碼,我只是想從我的Java程序中調用它。從java中調用已經生成的C代碼

+1

是的,你需要把你的C代碼轉換成一個DLL,然後使用JNI。如果您將C++用作「更好的C」,會更好 - 使用C++編譯器創建該共享庫。 – duffymo

+0

你可以寫一個make文件併爲你的c代碼創建一個可執行文件(靜態庫),然後從java程序中調用它。 –

+0

我正在使用JNI第一次可以請你一點一點地解釋一下。我有JNI教程,但是他們正在編寫C和Java。在我的情況下,我不需要編寫由Beremiz編輯器生成的C代碼。 –

回答

0

您可以使用JNI來做到這一點,一個很好的教程,請訪問: https://www.ibm.com/developerworks/java/tutorials/j-jni/j-jni.html

這可以讓你從Java調用C代碼。

+0

我有JNI教程,但是它們都在編寫C和Java。在我的情況下,我不需要編寫由Beremiz編輯器生成的C代碼。我只是想知道我怎麼能從java調用這個c代碼。 –

+1

您可能需要根據JNI提供的C代碼編寫一些鏈接C代碼,然後C代碼調用您自動生成的C代碼,這與@ h22建議的方式相同 – jrtapsell

1

而不是修改生成的代碼,你可以編寫一個C橋接受來自Java的調用並將它們轉發給你生成的代碼。它可以與生成的代碼一起編譯,製作單個.dll或.so庫。

JNI接口有很多特定的要求和協議。它不能用於調用在沒有JNI的情況下編寫的任意C函數。

將現有C庫集成到Java框架中時,這是一項非常常見的任務。