2016-08-16 37 views
2

我正在創建一個Windows程序,迄今爲止有一個.bat文件調用.pyw文件,我需要Java和C++的函數。我如何做到這一點?(我不介意創建一個新的批處理文件或python文件,並且我已經擁有C++部分的頭文件和我的java組件的.jar文件(對於Java,我使用Eclipse Java Mars,它是Java 8u101))謝謝!如何從Python 2.7中調用C++和或Java函數?

+0

如果這對您有意義:您可以查看www.jython.org - 也許這是您在JVM中運行Python代碼的一個選項。 – GhostCat

回答

1

這對於C++來說非常簡單:你必須用函數編譯一個庫,用Python導入它,然後......調用它! Python有一個強大的標準庫ctypes來處理這類任務。

以下是從假設的libc.dll加載print()函數的示例。

from ctypes import * 
libc = cdll.LoadLibrary("libc.dll") 
>>> print(libc.time(None)) 
1150640792 

在Python中調用Java在這裏覆蓋:How to call a java function from python/numpy?

+1

[CFFI](https://cffi.readthedocs.io/en/latest/)是討論從Python調用C時值得提及的另一個模塊。 – Angew

+0

謝謝,@Angew,我完全不瞭解CFFI,總是依靠純ctypes。絕對值得檢查! –

0

可以加載C++函數和Python的執行它像BasicWolf在他的回答解釋。對於Java而言,Jython可能是一個好方法。但是接下來會有一個問題 - 您需要依賴Jython,而Jython並不是最新版本的Python。您也將遇到不同庫的兼容性問題。

我建議編譯你的C++和Java函數來創建它們中的單個二進制文件。然後在Python中執行這些二進制文件,將參數作爲命令行參數傳遞。這樣你可以繼續使用CPython。您可以與任何語言編寫的程序進行互操作。

+0

所以我可以把所有的C++命令編譯成一個DLL,把所有的Java命令編譯成另一個DLL,然後像@BasicWolf所說的那樣從Python腳本中調用這兩個命令? – RBXII3