簡體   English   中英

如何從java調用c ++功能

[英]How to call c++ functionality from java

我有一個主要是GUI的Java程序,它顯示了從c ++命令行工具寫入xml文件的數據。 現在我想在java程序中添加一個按鈕來刷新數據。 這意味着我的程序必須調用c ++功能。

是通過系統調用從java調用程序的最佳方法嗎? c ++程序將為mac os和windows編譯,並且應始終與java程序位於同一目錄中。

我想生成一個可執行文件,可以將c程序存儲在jar中並從我的程序中調用嗎?

如果您可以訪問代碼並希望獲得外部程序的“交互式”體驗(例如,調用,獲取結果,進行其他調用),請研究JNI,它允許您通過包括從Java應用程序調用C或C ++代碼並將JNI果汁與您的C或C ++應用程序相關聯。

看到:

http://en.wikipedia.org/wiki/Java_Native_Interface

http://www.acm.org/crossroads/xrds4-2/jni.html

如果你真的需要一個“啟動應用程序並獲得結果”的解決方案,請查看Runtime.exec(),它可以啟動外部程序並捕獲其輸出。

請參閱: http//www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page = 1

http://www.rgagnon.com/javadetails/java-0014.html

假設沒有更好的通信方法(SOAP,ICE,套接字等),我將使用Runtime.exec()調用可執行文件。 JNI可以直接用於界面,但我不推薦它。 不,你不能把一個可執行文件放在jar中。 嗯,你可以,但你不能運行它,因為shell不知道如何運行它。

您可能還想查看Java Native Access API(JNA)

要回答最后一個問題,您無法在jar中運行可執行文件。

但是,您可以將其存儲在jar中並在運行之前將其提取到臨時目錄/文件中(第一次檢查其存在並在必要時提取)。 這將簡化您的分發,因為您只需要分發jar,並確保您運行的是與您的jar代碼相匹配的可執行文件。

暫無
暫無

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

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