It’s still useful to know how to make native calls from haxe manually ( for debugging by example ) but there is a quicker and easier way.
It’s stricly type, flexible and simple.
It use a simple macro you can find here : here.
All you have to do is to add it on build of yours haxe class.
1 2 3 | package org.shoebox.test; @:build(org.shoebox.utils.JNIMirror.build( )) class Test{ } |
Then all you need to do is to create mirrors for the native methods.
Mirrors for JNI Methods
Basic example:
In the following case the JNI class name and method name are not defined.
So the macro use the same classpath classname and function name than on the haxe side.
If the haxe method name or package is not the same on the java side:
You can customize both by adding argments to the JNI meta:
1 2 |
For non native types:
It works too for non-native type if the class exists on both side ( with the same package and class name ).
By example we are trying to get the instance of the java class Test inside haxe, the method is defined this way:
1 2 3 | @JNI static public function getInstance( ):Test{ } |
For CPP Methods
It works the same way, but the first meta argument ( library_name ) must be always defined ( for now ).
The second meta argument ( method_name ) is optional.
1 2 |
Hope it helps.