Skip to content

Instantly share code, notes, and snippets.

@tcejorpniocanom
Created February 18, 2019 18:38
Show Gist options
  • Save tcejorpniocanom/6c3c71ee51dfc5c08f0fdd64e94a55be to your computer and use it in GitHub Desktop.
Save tcejorpniocanom/6c3c71ee51dfc5c08f0fdd64e94a55be to your computer and use it in GitHub Desktop.
プラグイン更新(19/2/19)
monacoindにMonoを組み込み、プラグインで使えるようになりました。
luaと同じく、現在linuxのみサポート。
(どうしてもWindowsでやりたい人はwindows subsystem for linuxで)
ソースは後先考えないplugin_devブランチ
> git clone -b plugin_dev https://github.com/monacoinproject/monacoin.git
Mono 5.18以上がインストールされた環境でビルドすると有効になります。
https://www.mono-project.com/download/stable/#download-lin
を参考にMonoをインストール後、下記の手順を実行。
・./autogen.sh
・./configure
・(必要なら) make clean
・make -j? (←?はCPUコア数+2くらいの数を指定)
サンプルは sample/plugin_cs に入っています。
MonaPluginクラスのOnInit(), OnTerm(), OnWalletNotify(), OnBlockNotify() がcoindから呼び出されます。
使い方は、wallet.datと同じフォルダにpluginフォルダを作成し、そこにプラグインのdllを入れてください。
ロードと削除はluaの時と同じく
> monacoin-cli loadplugin プラグイン.dll
> monacoin-cli unloadplugin プラグイン.dll
簡単なサンプルがsample/plugin_csに入っています。
サンプルを実行するには以下のコマンドで.csをコンパイルし、出来た.dllをpluginフォルダに入れてください。
> mcs simple.cs -target:library -out:simple.dll
参照が必要なものは-r:で指定してください。
> mcs -r:System.Json.dll cmd_test.cs -target:library -out:cmd_test.dll
-monoconfig、-monolib、-monoetc をmonacoindの引数かmonacoin.confに書くと、Monoの設定やランタイムアセンブリのパスを指定できますが、Mono込みでmonacoindをビルドした環境なら必要ないです。
gdb上で実行するとプラグインアンロード時のmono_domain_try_unload()内でmonacoindが落とされる。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment