Возникли проблемы с привязкой функции к белке. Выполнение некоторых пользовательских привязок, поэтому я не могу использовать любые библиотеки.
void SqurrelEng::bindFunction(const std::string & name, function_callback f, const std::string & arguments)
{
sq_pushroottable(vm.handle());
sq_pushstring(vm.handle(), name.c_str(), -1);
sq_newclosure(vm.handle(), [&f,&arguments](HSQUIRRELVM v)->SQInteger
{
unsigned char* line = (unsigned char*)"test";
unsigned char** dat = &line;
f(dat);
return 1;
}, arguments.size()); //create a new function
sq_createslot(vm.handle(), -3);
sq_pop(vm.handle(), 1); //pops the root table
}
Я не могу заставить лямбду правильно связываться из-за захвата. Без добавления шаблона к этому вызову функции?
Кроме того, последний аргумент sq_newclosure — это количество аргументов, которое он принимает правильно?
Ошибка:
no suitable conversion function from "lambda []SQInteger (HSQUIRRELVM v)->SQInteger" to
"SQFUNCTION" exists
SQFunction определяется как:
typedef SQInteger (*SQFUNCTION)(HSQUIRRELVM);
Задача ещё не решена.
Других решений пока нет …