0

我在 C++ 应用程序中使用 AngelScripts 全局函数时遇到问题。

在我的 .cpp 文件中,我具有以下功能:

int multi(int x, int y)
{
    int z = x * y;
    cout << x << endl;
    cout << y << endl;
    return z;
}

我正在使用以下方法注册它:

engine->RegisterGlobalFunction("int multi(int &out, int &out)", asFUNCTION(multi), asCALL_CDECL);

在我的 .as 文件中,我这样调用函数:

multi(1, 2);

所以在这种情况下,我希望 x 为 1,y 为 2,但是当我使用 cout 打印值时,它类似于 x = 4318096 和 y = 4318100。

我不知道我的错误在哪里。我很感激我能得到的任何帮助。

4

2 回答 2

1

您错误地注册了此功能。它应该是:

engine->RegisterGlobalFunction("int multi(int, int)", asFUNCTION(multi), asCALL_CDECL);

Out 表示此函数将使用此参数作为输出。

于 2014-10-27T09:01:52.057 回答
0

它应该是:

engine->RegisterGlobalFunction("int multi(int, int)", asFUNCTION(multi), asCALL_CDECL);

当您使用 out 时,它希望您设置 out 值。而且它在进入函数之前不会被设置。我会按照我提到的那样去做,它将被设置并且不希望它被设置。祝你好运。

于 2015-06-12T00:21:56.847 回答