WindowsでDLLを作ろうとしてmrb_context_runの歴史を調べた
おはようございます。ここ数日夕方になると熱が上がる次男、昨日は夕方も熱も上がらず、汗かいて寝て、今朝も熱が上がらなかったので、おそらく復活かと思います。@kjunichiです。
背景
mruby-juliaなるmrubyからはJulia(PyCall経由でPythonも)を呼べ、JuliaからはmrubyのAPIにアクセスできるmrbgemを作ってます。
今年は、Windows環境がメインな環境であれこれ開発進めようとしていて、その際にmruby-sharedlibなるmrbgemを利用して、libmruby.a相当の mruby.dllを作ろうとしたら、defファイルのシンボル「mrb_context_run」が存在しないとうエラー。
mrb_context_runの歴史
1.0.0
mrb_context_runはmruby v1.0.0ではありました。
mrb_value mrb_context_run(mrb_state*, struct RProc*, mrb_value, unsigned int);
1.1.0
MRB_API mrb_value mrb_context_run(mrb_state*, struct RProc*, mrb_value, unsigned int);
1.2.0
MRB_API mrb_value mrb_context_run(mrb_state*, struct RProc*, mrb_value, unsigned int);
current
#define mrb_context_run(m,p,s,k) mrb_vm_run((m),(p),(s),(k))
現在のmasterはこのように、mrb_vm_runを呼び出すマクロとして定義されています。 mruby-sharedlibでDLLを生成しようとしてdefファイルのシンボルが見つからないというエラーの 原因はこれでした。
まとめ
どうやら、現在のリリース版までは、存在しているようです。 単純にmruby-sharedlibにこのAPIを削除したプルリクを送るのは待った方がいいかもでした。
関連記事
- mrubyでselfを呼び出されたメソッドのインスタンスとして実行するには
- rubyの代わりにmrubyをつかう→はやくならなかったorz
- mrubyでPostgres.appを使って、LOBも扱ってみた
- mruby-juliaでPythonもmrubyから呼び出せるようになった
- TLで「mruby」を検索したらmrubyのコントリビュータになれた
- mrubyでaobenchを動かし、GIFアニメを出力できるようにした
- GPUを使って、mrubyでのaobenchを更に速くした
- mrubyでHTTP/1.1のKeep-Aliveで複数回リクエストを出してみた
- cordovaのプラグインを作ってkindle fireでmrubyを動かしてみた
- mrubyのFile.openをちょっと調べたメモ
- iOSでもCordovaプラグインを作ってmrubyを動かした
- Windowsでmruby-http2を動かした
- Julia言語からmruby-webcamを使ってWebカメラの画像を取得した