看到 Fred 寫的Fred's blog: 讓我們輕鬆自在設計自己的 LXPanel Plugin,心想,應該也可以用 mono c#、boo 等來寫吧~
於是想到gimp-sharp,這個 library 讓你可以使用 c#、vb.net、boo 寫給 gimp 使用的 plugin,下載來看以後,真是令人驚訝~
原來 gimp 是使用外部執行的方式去呼叫這些 plugin,而這些 plugin 以收取參數與呼叫 gimp library 的方式來與 gimp 主體進行溝通。
那麼這樣,似乎就行不通了。一般 C/C++ plugin 的處理方式,都是以 dl_xxxx 系列函數來開啟 plugin(.so) 進行操作,對於 managed code 來說,assembly(.dll)並沒有開放這些介面。
從 C/C++ 呼叫 Managed code 是可行的,目前只適用於 Mono,請參閱這裡:Embedding Mono
這裡有幾個範例,應該是夠用了。
看起來如果要作 Plugin 給 lxpanel 用的話,還是得用 C 寫一個 Plugin,然後這個 Plugin 負責載入 mono 的 assembly,再把必要的資訊傳進去給 managed code。
有可能作成 chain-loader 的形式,由這個 Plugin 再去把其他用 Managed code 做的 Plugin 載入嗎??
恐怕還是得再看 lxpanel 內部如何用 plugin 才能決定。
沒有留言:
張貼留言