2011-09-29 90 views
15

我想從Java調用C++方法。我閱讀了關於JNI的知識,但是我沒有得到如何獲取所有庫文件以及在哪裏保存它以便從命令行運行程序。如何從Java調用C++?

是否有任何方法從Eclipse本身調用C++方法,因爲我正在使用它來運行Java類。

+0

看看這個線程 - http://stackoverflow.com/questions/7212982/jni-unable-to-fix-this-error/7213943#7213943 – adatapost

+0

只是遵循任何JNI的教程,並得到開始 –

+0

[如何使用NDK?從'hello world'app開始](http://stackoverflow.com/questions/4777935/how-to-use-ndk-starting-with-hello-world-app) –

回答

5

如果JNI太複雜,你可以看看JNA。在第一種情況下,您必須創建本機封裝代碼(使用C或C++)以加入Java和本機(C++/C/...)代碼。第二種情況是在運行時完成的(所以你只需要Java代碼+配置)。

+0

「JNI」是標準答案。但是,如果JNA滿足您的需求 - 很酷! @Fernando Miguelez:很好的建議!感謝你的分享!這是另一個鏈接:http://www.javaworld.com/javaworld/jw-02-2008/jw-02-opensourcejava-jna.html – paulsm4

6

雖然我以前使用JNI-C++橋接(雖然只有一點點) - 但它可能有點難看。您可能需要考慮使用SWIG來幫助您生成所有雜亂的鍋爐板代碼。

2

我已經使用JNA之前的簡單接口,它很簡單和優雅。儘管如此,如果存在複雜的界面,那麼最好使用SWIG。

有一些比較SWIG與JNI和JNA的好答案。這個問題雖然被問到了一段時間。

SWIG vs JNI and JNA

1

JNA可以用來代替JNI。

所有你需要的是下載JNA罐子https://github.com/java-native-access/jna#download)應該包含在你的Java項目。

您需要在項目屬性中給出C++庫的位置。

  • 右鍵單擊項目
  • 運行
  • 在VM選項包括此-Djava.library.path = 「C:您的DLL 位置」

訪問這個網站的例子,它也有一個Java和C++項目的源代碼,以瞭解它是如何工作的。 (http://blog.mwrobel.eu/how-to-call-dll-methods-from-java/#a_downloads