StoryEditを作ってましたが延期。この広告は、90日以上更新していないブログに表示しています。2014-04-22最近はもっぱらGo言語である。CGOでやっぱりはまる。CGOGo言語、なかなかに良い。おなじみのバイディングを行ってみた。Go言語にはCGO(シーゴー)というバインディングフレームワークがある。fmt.Printf(float64(C.go_sin(C.double(3.14))));}なにしてるかというと、go_sinというラッパー関数をgo本体から呼び出している。"C"の置き場所である。以下のように、空行を挟むと、コンパイルに失敗する。fmt.Printf(float64(C.go_sin(C.double(3.14))));}ちなみに、直接Cの関数を使えるので、以下のようにもかける。fmt.Printf(float64(C.sin(C.double(3.14))));}ちなみにCGOの機能をみて、「なんだ、すごく簡単じゃないか。なんでもバインドし放題だぜ」と思ったんだが、これは大きな間違いであった。23:52最近はもっぱらGo言語である。CGOでやっぱりはまる。Tweet広告を非表示にするもっと読むコメントを書く2014-02-26JNAではまる。mappingへ移行する。Javaはまりポイント、第三回。centralで惹いてくると、jna-3.0.9しかなかったため、これを利用していた。ネットのドキュメントのバージョンは、3.2.7とか。ここで開発されているのがjna-4.0.0なのだが、これはmavenでサポートされていない個別コンパイルのものだと思ってた。net.dev.java.jnaと指定すれば、とってこれた。jnaのドキュメントをみてると、実はライブラリのバインドの方法は2つあるようだ。classで読み込む方法。Clibrary.INSTANCE...といちいち書かなければいけないのがおっくうだった。mappingという方法。performanceが必要な場合は、と書いてあるので、こちらのほうがよさそうだ。mappingにバインドを移行する。Java側のJNIアクセスにあうようなバイナリをメモリに生成するのだろう。jna3での、一つ一つの関数ラッパをメモリ上に生成する方法に比べて早い気がする。Libraryの初期化で失敗してしまう。問題になっていたのは、以下の関数。timeout);どうやら、Structureは使えないようだ。StackOverflowに聞いて、解決。Structureの場合は、Structure[0].getPointer()を渡すようにしろ、とのこと。型チェックははずされるので、publicにはしないほうが良いだろう。いうわけで、無事epollのバインドは終了。微妙にsetAlignTypeも変更する必要があった。11:39JNAではまる。mappingへ移行する。Tweet広告を非表示にするもっと読むコメントを書く2014-02-23JNAではまる、その2。__attribute__((__packed__))のマッピングをする。Accessさらに2時間ほどはまった。