簡體   English   中英

將Python嵌入到C ++應用程序中

[英]Embedding Python into C++ application

語境:

我們一直面臨的問題是對我們的市場數據應用進行單元測試。 這些應用程序坐下來觀察從源中檢索的數據並執行某些操作。 一些難以觸發的關鍵事件很少發生,並且測試人員很難在所有情況下驗證我們的應用程序是否正確執行,因此我們必須依賴於單元測試。

這些系統通常通過在事件發生時發出回調(進入我們的應用程序)來工作,然后我們的任務就是處理這個問題。

解決方案我設想:

是否可以嵌入Python或擴展(不是100%清楚),以便測試人員可以啟動Python REPL並發出類似於回調的函數調用,然后由我們的C ++類處理。 在運行時對我們的對象進行某種形式的動態操作。

我在我的一個項目中做了類似的事情,使用SWIG為C ++代碼的相關部分生成python綁定。 然后我按照其他人的建議嵌入了翻譯。 完成后我可以隨意執行python代碼(例如PyRun_SimpleString ),它可以訪問C ++代碼。 通常我最終使用類似Singleton的東西來更容易地從python訪問特定的C ++對象。

另外值得一提的是swig python模塊中的導演 ,它允許更直觀地處理虛擬功能。 根據您正在做的事情,您可能會發現這些非常有幫助。

你想做的事情是可能的,雖然不是很容易做對。 聽起來你想要嵌入(而不是擴展)Python。 這兩個主題均包含在本教程這里

從C ++類到Python類的映射有很多工作,並且有許多方面可能會以微妙的方式出錯,尤其是內存泄漏和多線程(如果您的現有代碼是多線程的)。 但是,如果它僅用於測試情況並且穩定性不是關鍵任務,那么它可能不是一個問題。

對的,這是可能的。 請參閱此內容

暫無
暫無

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

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