//aardio 调用 Go 语言 - aardio.CallJson import golang; var go = golang();//创建 Go 编译器( 仅调用编译的 DLL 不需要此扩展库 )
//Go 与 aardio 一样,源码与字符串默认为 UTF-8 编码 go.main = /********** package main
import "C" import "aardio" //源文件: ~\lib\golang.res\aardio\aardio.go
//export TestCallBack func TestCallBack(fnCallback uintptr) int{
var s = "字符串"
/*
回调 aardio 用 raw.jsonCall 创建的函数指针。
支持可变参数(使用 JSON 自动转换参数),aardio 函数返回 null 或 int 类型整数值 。
aardio.CallJson() 返回类型为 (int,error)。
注意:aardio 与 Go 导出函数所在的默认 goroutine 之间的互调属于同一线程(这里不用考虑多线程)。
*/
var r,_ = aardio.CallJson(fnCallback,s,123,map[string]int{"id": 1, "id2": 2} )
return r
}
func main() {} **********/
//上面的 go.main 会自动保存到文件,然后编译 Go 源码生成同名 DLL 文件 go.buildShared("/.go/CallJson.go");
//------------------下面调用 DLL-----------------------
import console.int;
//加载 Go 编译的 DLL,注意要指定 cdecl 调用约定 var goDll = raw.loadDll("/.go/CallJson.dll",,"cdecl");
import raw.jsonCall;
//创建回调函数指针, 在 Go 中必须用 aardio.CallJson 调用。 var callback = raw.jsonCall( function(a,b,c){ console.log("回调参数:",a,b) console.dumpJson(c); return 123; } );
var ret = goDll.TestCallBack( callback ) console.log(ret);
Markdown 格式