2013-07-11 64 views
3

我有一個Delphi Win32程序。我想通過Python模塊「暴露」某種程序結構和過程。例如。模塊my_api必須公開我的應用程序結構/方法的公共項目。該模塊只能在內存中「坐」。Delphi或C代碼與Python腳本之間的橋樑

然後,我想在同一個應用程序中調用Python腳本(使用Python dll),它可以導入my_api並調用我的應用程序方法。 如何做到這一點。

+0

我剛剛注意到你在這裏提到了Delphi。你將會經歷兩個橋樑來談論Delphi和Python。例如,要從Delphi調用Python函數,您需要使用Delphi FFI來訪問C函數'PyObject_Call';爲了向Python公開一個Delphi函數,你需要首先將它包裝起來,以便從C中調用,然後將其包裝爲Python。我很久沒有使用過Delphi,但是如果這很麻煩,你可能需要考慮使用Delphi.NET(這是一件對吧?)和IronPython。 – abarnert

+0

Tks,我會用Delphi的方式。 – Prog1020

回答

3

你在這裏要求兩件事情,它們經常一起出現。

首先,你想要擴展 Python解釋器,添加Python代碼可以使用的類型和函數等等。

其次,你想嵌入 Python解釋器在你的應用程序,所以它可以運行Python腳本(它可以使用你的擴展模塊)。

假設你想使用CPython(通常的Python解釋器),教程Extending and Embedding the Python Interpreter是文檔的一部分。

您可能希望查看其他選項以幫助更方便地進行擴展 - 例如,您可以使用Cython以近Python語言而不是C語言編寫橋代碼,或者使用Boost.Python將橋代碼寫入很好的C++可以幫你處理大部分的樣板文件,或者SWIG自動生成它,或者避免編寫一個橋樑。但值得首先了解其基本機制。