Использование глобальных функций в AngelScript

У меня проблема с использованием глобальных функций AngelScripts внутри C ++ — приложения.

В моем файле .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.

Я не могу понять, где моя ошибка. Я ценю любую помощь, которую я могу получить.

0

Решение

Вы неправильно зарегистрировали эту функцию. Так должно быть:

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

Out означает, что эта функция будет использовать этот параметр в качестве выхода.

1

Другие решения

Так должно быть:

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

Когда вы используете, он ожидает, что вы установите выходное значение. И он не устанавливается до того, как входит в функцию. Я бы сделал это, как я уже говорил, он будет установлен и не ожидает, что он будет установлен. Удачи.

0