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