Использование глобальных функций в 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.
Я не могу понять, где моя ошибка. Я ценю любую помощь, которую я могу получить.
2 ответа
Вы неправильно зарегистрировали эту функцию. Так должно быть:
engine->RegisterGlobalFunction("int multi(int, int)", asFUNCTION(multi), asCALL_CDECL);
Out означает, что эта функция будет использовать этот параметр в качестве выхода.
Так должно быть:
engine->RegisterGlobalFunction("int multi(int, int)", asFUNCTION(multi), asCALL_CDECL);
Когда вы используете, он ожидает, что вы установите выходное значение. И он не устанавливается до того, как входит в функцию. Я бы сделал это, как я уже говорил, он будет установлен и не ожидает, что он будет установлен. Удачи.