Skip to content

Instantly share code, notes, and snippets.

@nocd5
Created June 23, 2014 17:06
Show Gist options
  • Save nocd5/f4ddc3770374b3d75646 to your computer and use it in GitHub Desktop.
Save nocd5/f4ddc3770374b3d75646 to your computer and use it in GitHub Desktop.
diff --git a/mruby.go b/mruby.go
index b06ee72..f685393 100644
--- a/mruby.go
+++ b/mruby.go
@@ -20,8 +20,7 @@ static int _mrb_fixnum(mrb_value o) { return (int) mrb_fixnum(o); }
static float _mrb_float(mrb_value o) { return (float) mrb_float(o); }
#cgo CFLAGS: -Imruby/include
-#cgo LDFLAGS: -L mruby/build/host/lib -lmruby -lm
-#cgo windows LDFLAGS: ./libmruby.dll.a
+#cgo windows LDFLAGS: -L mruby/build/host/lib/shared -lmruby
*/
import "C"
import "unsafe"
@nocd5
Copy link
Author

nocd5 commented Jun 23, 2014

事前準備

  • DEFとlibmruby.aから作ったダイナミックリンク用libmruby.aをlib/sharedに配置
  • go-mrubyに付いてるmruby.defが対象としてるmrubyのリビジョンが不明だが、
    exportされてない関数が多数あるのでその都度mruby-dll/create_def.rbあたりを使って作るのがベターかな?
  • 9行目の
-#cgo LDFLAGS: -L mruby/build/host/lib -lmruby -lm

消さないと、こっち優先されてスタティックリンクしようとするみたい。

  • 自分の環境だと ./libmruby.dll.aとしてリンクするとちゃんとダイナミックリンクされないようなので、-L(ライブラリパス) -lmrubyとする。ちなみにダイナミックリンクの場合は-lmrubyでlibmruby.aもlibmruby.dll.aも両方さがすので名前はどっちでもOK

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment