LoginSignup
2
2

More than 5 years have passed since last update.

OpenFL(Haxe)の拡張モジュールを作るのも割と簡単

Posted at

まえがき

なぜか続いた拡張モジュールシリーズ。

ちょっと前に試してたのが発掘されたので。
正直、自分でもあんまりよくわかってないけどOpenFL周辺は日本語情報が全然ないのでとりあえず書く。

準備する

どれが必要なライブラリか忘れたけど、このあたりがあれば拡張は作れる。無いならhaxelib install LIBNAME

➜  ExtensionExample git:(master) ✗ haxelib list
haxelib_client: [3.1.0-rc.4]
hxcpp: [3.1.39]
hxlibc: [1.1.4]
lime-tools: [1.5.7]
lime: [1.0.1]
openfl: [2.0.1]

スケルトン生成

Limeでもコマンドでスケルトンが作れるので実行するだけ。

lime create extension TestExtension

TestExtension/project/commonにC++のソースがあるのでいい感じにいじってください。今回は取り敢えずスケルトンのママ進める。

拡張モジュールのビルド

cd TestExtension/projectに移動してhaxelib run hxcpp Build.xml -DHXCPP_M64

HXCPP_M64の部分はほかプラットフォームだと変わるはず。何にかはしらない。

リンクを貼る

TestExtension/ndll/Mac64/TestExtension.dylib
は出来るんだけど.ndllが必要って後に怒られる。
ln -s TestExtension/ndll/Mac64/TestExtension.dylib TestExtension/ndll/Mac64/TestExtension.ndll
とすればとりあえず解決できる。正しい解決方法は知らない。

OpenFLから呼ぶ

TestExtensionがあるディレクトリにTestAppを作る。その中にMain.hxとproject.xmlを作る。それぞれ中身は以下。

Main.hx
class Main {
    public static function main(){
        var t = new flash.text.TextField();
        t.text = Std.string(TestExtension.sampleMethod(42));
        flash.Lib.current.addChild(t);
        trace(t.text);
    }
}
project.xml
<?xml version="1.0" encoding="utf-8"?>
<project>
    <meta
        title="TestApp"
        package="me.labe.testapp"
        version="1.0.0"
        company="Laurent Bedubourg"
    />
    <app
        main="Main"
        path="Export"
        file="TestApp"
    />
    <source path="." />
    <haxelib name="openfl" />
    <include path="../TestExtension" />
</project>

TestAppのビルド、実行

TestAppに移動して、lime test cppで画面に味も素っ気も無いウインドウが表示されたら完成。

あとがき

リンク貼るあたりが残念。というか前やった時はこの手順やった記憶ないんだけどなあ。識者のアドバイス求む。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2