0

所以看起来 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)

检查文档和头文件,此错误代码与无效语法有关。但是函数声明的语法绝对应该是有效的。有人有想法么?

4

1 回答 1

1

我认为问题在于您正在注册您的功能的签名:float sin(float in).
我假设根据您的 C++ 函数,“in”应该是参数的名称,但 AngelScript 具有用于引用的//in说明符,即.outinoutfloat sin(float &in)

这可能是一个错误,或者它可能记录在某个地方,您不能将这些关键字用作函数参数名称。

如果您只是更改签名中的参数名称(回调函数中不需要更改)(例如float sin(float f))或完全删除它(float sin(float)因为在签名中根本不需要它),您的函数应该可以正常注册。

于 2014-02-05T02:38:48.550 回答