2009-02-19 47 views
10

我有興趣聽到有關在C/C++應用程序中嵌入單(開源實現.NET的)人民的經驗。它如何分配這樣的應用程序以及依賴關係是什麼?我已經在OS X上測試過,單聲道是一個巨大的框架(數百MB)。我的應用程序的用戶是否都需要這個大框架,或者是否可以將其剝離或將所有內容編譯到主可執行文件中。嵌入:單聲道VS LUA

我之前有在C++應用程序中嵌入Lua的經驗,以及作品真的很好,因爲我可以和我的主可執行靜態鏈接整個Lua解釋。所以我沒有外部依賴。是否有可能做類似的單聲道?

任何洛人在這裏誰能夠在他們是如何發現單相比,Lua的評論? PS:通過嵌入我的意思是一個C++應用程序,它初始化一個單聲道環境並加載一個.NET程序集並執行它,然後允許程序集中的C#代碼和主可執行程序中的C++方法之間進行通信。

回答

6

你或許應該也看看Mono的Small Footprint頁面,介紹如何嵌入一個較小的運行。哎呀,他們自己用Moonlight來做。

我希望幫助。

+0

謝謝。如果我理解正確,mscorlib.dll和JIT是唯一需要嵌入單聲道的東西嗎?有沒有辦法靜態鏈接mscorlib.dll? – 2009-02-19 10:34:43

+0

Mono允許你完全靜態地鏈接你的代碼,所以你可能甚至不需要JIT。看看他們的iPhone實施。 – 2009-02-19 11:01:57

2

這是2歲的問題。所以現在情況可能會有所不同。

對我來說,最重要的一點是GC。我將Lua嵌入到互動應用程序和遊戲中,因爲需要增量GC。目前Lua 5.1具有精確的增量式GC,但我無法在Mono上找到增量或精確GC的任何證據。所以內存會泄漏(即使它非常小),應用程序會間歇性地出現問題。

人說,GC暫停可以通過調整一些參數和彙集的對象來解決,但我經歷過,它從未可以不加任何分佈GC負荷隨着時間的推移解決了GC方法。分代GC是分配算法之一,但它太粗糙,幾乎沒有幫助。

由於無法控制壽命模式或代碼使用的不是通過彙集對象重用實例你的。 (如基本類庫)

所以我不建議在C#平臺(單聲道或.NET,至少現在還不是),交互式/(軟)實時應用程序。


編輯

我不知道任何增量/併發走近GC是否呈現在單聲道或.NET。如果你確定他們提供的那種GC,當然,這是很好的使用:)