簡體   English   中英

使用SWIG將Ruby嵌入C ++應用程序中?

[英]Embedding Ruby in a C++ application using SWIG?

過去,我已經使用SWIG成功創建了Ruby-C ++綁定,其中C ++代碼通過連接到Ruby腳本的形式編譯為動態庫。

但是,我想反過來做。 使用C ++創建可執行文件,並使其能夠加載和執行Ruby代碼。 Ruby也應該能夠調用在C ++端定義的函數(自然,否則,我所需要的只是'system()'調用。)

SWIG是否提供實現此目標的方法?

您可能對C ++中嵌入的Ruby感興趣

SWIG解決了部分問題:它使您可以創建與已編寫的C ++函數的Ruby綁定。 問題的另一半,就是制作一個可以評估Ruby代碼的C ++程序,它可以像您希望的那樣簡單或復雜。

一種簡單的方法是將程序分為兩半:位於dll中的紅寶石可訪問部分,以及與該dll鏈接並通過system()調用Ruby的不可訪問部分。

在更高的層次上,您可以使用C ++中的ruby的C API來運行Ruby代碼。 這使您可以更好地控制Ruby代碼的執行方式,並有機會進行諸如將所有已執行的Ruby包裝在從Ruby異常生成C ++異常的塊中的操作。 這里的缺點是您需要了解Ruby的C API,雖然它並不糟糕,但肯定不如Lua的友好。

如果您還想要更多,那么您將陷入困境。 Ruby和C ++都是復雜的語言,要使它們互操作是一個真正的挑戰。 ÉricMalenfant的鏈接可能對您有用。

暫無
暫無

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

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