-
Notifications
You must be signed in to change notification settings - Fork 217
Closed
Description
This has been a problem for a long time, but I failed to create a test case the first time I tried.
For the purpose of this test case, everything here is located in "D:/haxe" on my computer.
@:build(cpp.cppia.HostClasses.include())
class Test
{
public static function main()
{
var source = sys.io.File.getContent("D:\\haxe\\MyScript.cppia");
untyped __global__.__scriptable_load_cppia(source);
}
public static function callScript()
{
var myScriptClass = Type.resolveClass("MyScript");
var s:Script = cast Type.createInstance(myScriptClass, []);
//calls base function (Script)
s.init();
//calls implementation (MyScript)
Reflect.callMethod(s, Reflect.field(s, "init"), []);
}
}class Script
{
public function init()
{
trace("init called in Script.");
}
}#if cppia
class MyScript extends Script
{
public static function main()
{
Test.callScript();
}
override public function init()
{
trace("init called in MyScript.");
}
}
#endCompile host
haxe -main Test.hx -cpp host -D scriptable -D dce=no -D dll_export=D:/haxe/export/export_classes.info
Compile script
haxe -main MyScript.hx --macro cpp.cppia.HostClasses.exclude() -D dce=no -D cppia -cpp MyScript.cppia -cp export
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels