所以看起来Angelscript与它允许我处理的功能相当不一致。我正试图宣布一个全局函数:
scrpEngine->RegisterGlobalFunction("float sin(float in)", asFUNCTION(sinCallback), asCALL_CDECL);
我的sin回调函数(调用sin函数而不用担心它被重载)看起来像这样:
float sinCallback(float in) {
return sin(in);
}
每当我编译脚本时,我都会收到错误,特别是这些错误:
ERROR: System function (1:17) : Expected ')' or ','
ERROR: (0:0) : Failed in call to function 'RegisterGlobalFunction' with 'float sin(float in)' (Code: -10)
检查文档和头文件,此错误代码与无效语法有关。但是,函数声明的语法肯定应该是有效的。有人有什么想法吗?
答案 0 :(得分:1)
我认为问题是您使用以下方式注册功能的签名:float sin(float in)
我假设“in”应该是你的C ++函数的参数名称,但是AngelScript有in
/ out
/ inout
个引用说明符,即{{ 1}}。
这可能是一个错误,或者可能会在某处记录您无法将这些关键字用作函数参数名称。
如果您只是更改签名中参数的名称(回调函数中没有必要更改)(例如float sin(float &in)
)或完全删除它(float sin(float f)
,因为签名中不需要它在所有),你的功能应该注册。